2013-04-30 2 views
-1

Хорошо, так что еще один вопрос в течение дня. Я хочу иметь BorderLayout, где у меня есть логотип наверху, а не три, а четыре столбца в центре. Есть ли способ изменить редактор BorderLayout, или мне просто нужно сделать его самостоятельно? (И если я должен сам сделать это, с чего бы начать, как я никогда раньше не делал свои собственные?)Либо редактирование BorderLayout, либо создание пользовательского LayoutManager

Мой код на данный момент, текст или что-то еще не понравилось (хотя я и пытался добавления в изображения, и по какой-то причине, он не работает, надеюсь, я буду понять это.)

public static void createGUI(){ 
    JFrame programFrame = new JFrame("Warlords Organizer"); 
    programFrame.setLayout(new BorderLayout()); 

    Icon backgroundIcon = new ImageIcon(IMAGE_PATH); 
    JLabel contentLabel = new JLabel(backgroundIcon); 
    contentLabel.setLayout(new BorderLayout()); 

    File imageFile = new File(IMAGE_PATH); 
    File imageFile2 = new File(IMAGE_PATH2); 

    //Warlords Logo JLabel 
    Icon logoIcon = new ImageIcon(IMAGE_PATH2); 
    JLabel warlordsLogo = new JLabel(logoIcon); 
    warlordsLogo.setLayout(new BorderLayout()); 

    //JFrame programFrame Constructors 
    programFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    programFrame.setContentPane(contentLabel); 
    programFrame.pack(); 
    programFrame.setVisible(true); 
    programFrame.setResizable(false); 
} // public static void createGUI() Closing 

(проблема с логотипом не путь_к_файлу, поскольку у меня есть, что ссылка в коде Я не публиковал.)

Так что да, сорта 2 вопроса сразу; Что я сделал с логотипом? и Как я могу отредактировать (или сделать) макет, чтобы он соответствовал его вершине (например, BorderLayout PAGE_START), но 4 столбца в центре?

EDIT: Прошу прощения, если у меня не было достаточной информации для оказания помощи, я не совсем уверен, какой другой код я мог бы предоставить. Я решил пойти с этим, я надеюсь, что это работает -

//Makes the Initial BorderLayout 
    JPanel allContent = new JPanel(); 
    allContent.setLayout(new BorderLayout()); 

    //New JPanel for GridLayout 
    JPanel fourRows = new JPanel(new GridLayout(0,4)); 
    fourRows.setLayout(new GridLayout()); 

    allContent.add(warlordsLogo, BorderLayout.NORTH); 
    allContent.add(fourRows, BorderLayout.CENTER); 

Я уверен, поставив макет на JPanel fourRows, а затем делать fourRows.setLayout является излишним, хотя.

Мое последнее намерение - иметь логотип наверху и четыре столбца в центре, где я могу добавить панели и кнопки. Я использовал (0,4), потому что не уверен, сколько строк я собираюсь в итоге получить, как здесь: https://stackoverflow.com/a/5657131/1676781

Что-нибудь могу исправить, чтобы исправить мой код? (Что здесь) -

import java.awt.*; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import javax.swing.*; 

public class MainFrame { 


//Image Paths 
private static final String IMAGE_PATH = "imageFolder/warlordsOrganizerBackground.png"; 
private static final String IMAGE_PATH2 = "imageFolder/warlordsLogo.png"; 

//Making the parts for the GUI 
public static void createGUI(){ 
    JFrame programFrame = new JFrame("Warlords Organizer"); 
    programFrame.setLayout(new BorderLayout()); 

    Icon backgroundIcon = new ImageIcon(IMAGE_PATH); 
    JLabel contentLabel = new JLabel(backgroundIcon); 

    File imageFile = new File(IMAGE_PATH); 
    File imageFile2 = new File(IMAGE_PATH2); 

    //Warlords Logo JLabel 
    Icon logoIcon = new ImageIcon(IMAGE_PATH2); 
    JLabel warlordsLogo = new JLabel(logoIcon); 

    //Makes the Initial BorderLayout 
    JPanel allContent = new JPanel(); 
    allContent.setLayout(new BorderLayout()); 

    //New JPanel for GridLayout 
    JPanel fourRows = new JPanel(new GridLayout(0,4)); 
    fourRows.setLayout(new GridLayout()); 

    allContent.add(warlordsLogo, BorderLayout.NORTH); 
    allContent.add(fourRows, BorderLayout.CENTER); 

    //Add ScrollPane MAKE SURE TO ADD TO new JScrollPane WHERE IT NEEDS TO BE/TEXT 
    JScrollPane scrollPane = new JScrollPane(); 
    scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
    scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 

    scrollPane.setOpaque(false); 
    scrollPane.getViewport().setOpaque(false); 

    //JFrame programFrame Constructors 
    programFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    programFrame.setContentPane(contentLabel); 
    programFrame.pack(); 
    programFrame.setVisible(true); 
    programFrame.setResizable(false); 

} // public static void createGUI() Closing 

public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     createGUI(); 
    } //public void run() Closing 
    }); 
} 
} 
+0

* «не три, а четыре столбца в центре» * В 'ЦЕНТРЕ'' BorderLayout' имеется только один столбец. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

+0

@AndrewThompson, я думаю, он говорит о вертикальном центре макета, а не о 'BorderLayout.CENTER'. Итак, 'EAST',' CENTER' и 'WEST'. – DeadlyJesus

+0

@DeadlyJesus * «Я думаю, он говорит о» * .. SSCCE говорит громче, чем слова. (И меня больше интересует информация, чем спекуляция.) –

ответ

1

Используйте только NORTH, CENTER и SOUTH из Borderlayout. В CENTER поместите JPanel с 4 колонками GridLayout.

+0

Я так не думал об этом, спасибо. Мне нужно задуматься над программированием, прошло некоторое время с тех пор, как я вычистил Java (сегодня мой первый день назад.) Спасибо за то, что вы с моими глупыми вопросами, я в конечном итоге использую - setLayout (новый GridLayout (0,4)); – Hathor

Смежные вопросы