Хорошо, так что еще один вопрос в течение дня. Я хочу иметь 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
});
}
}
* «не три, а четыре столбца в центре» * В 'ЦЕНТРЕ'' BorderLayout' имеется только один столбец. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –
@AndrewThompson, я думаю, он говорит о вертикальном центре макета, а не о 'BorderLayout.CENTER'. Итак, 'EAST',' CENTER' и 'WEST'. – DeadlyJesus
@DeadlyJesus * «Я думаю, он говорит о» * .. SSCCE говорит громче, чем слова. (И меня больше интересует информация, чем спекуляция.) –