[英]How can i use multiple panels with different layouts for my gui?
我在將 2 個不同的按鈕面板嵌套到我的主面板時遇到問題。 它對我來說只有一個 1 面板。 現在通過我的實際嵌套,我在主面板和第一個按鈕面板上看到了最后添加的面板。 此外,我添加的“editButton”沒有顯示出來。 我編譯時沒有錯誤。 看來我只是在安排上犯了一個錯誤。 如果有任何建議會非常好。 這是我的代碼片段:提前致謝!
private final String name;
private JLabel catLabel;
private JButton cat1Button;
private JButton cat2Button;
private JButton cat3Button;
private JButton cat4Button;
private JButton editButton;
private JButton deleteButton;
private JButton insertButton;
public JPanel panelMain;
public JPanel panel;
public JPanel panel1;
public ReadwriteQuiz readwrite;
public GUIEdit(String name){
this.name = name;
this.setTitle(name);
this.setLocationRelativeTo(null);
this.setLayout((null));
this.setSize(400,300);
this.setLocation(400,150);
this.setResizable(false);
panelMain = new JPanel();
panelMain.setLayout(new BoxLayout(panelMain, BoxLayout.Y_AXIS));
panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.setBackground(Color.lightGray);
panel1 = new JPanel();
panel1.setLayout(new BoxLayout(panel1, BoxLayout.X_AXIS));
panel1.setBackground(Color.ORANGE);
panelMain.add(panel);
panelMain.add(panel1);
catLabel= new JLabel("Willkommen zum Quizzeln ! \n Wählen Sie Ihre Kategorie");
catLabel.setBounds(90,10,260,40);
panel.add(catLabel);
cat1Button = new JButton("Kategorie 1");
cat1Button.setBounds(52,90,120,40);
panel.add(cat1Button);
cat1Button.addActionListener((e) -> {
try {
readwrite.readFile("kategorie1.txt");
} catch (FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
});
cat2Button = new JButton("Kategorie 2");
cat2Button.setBounds(220,90,120,40);
panel.add(cat2Button);
cat3Button = new JButton("Kategorie 3");
cat3Button.setBounds(52,160,120,40);
panel.add(cat3Button);
cat4Button = new JButton("Kategorie 4");
cat4Button.setBounds(220,160,120,40);
panel.add(cat4Button);
editButton = new JButton("Frage editieren");
editButton.setBounds(52,400,120,40);
panel1.add(editButton);
this.add(panelMain);
this.add(panel);
this.add(panel1);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
}
您有一個主面板,並且您已經將其他嵌套面板添加到主面板,因此您只需將該主面板添加到父面板,但您正在添加主面板(包括其他 2 個)並再次添加第一個面板和再次添加第二個面板
所以
this.add(panelMain);
應該夠了
全class
public class app {
private JTextField textField1;
private JPanel panel;
private JLabel label;
private JLabel catLabel;
private JButton cat1Button;
private JButton cat2Button;
private JButton cat3Button;
private JButton cat4Button;
private JButton editButton;
private JButton deleteButton;
private JButton insertButton;
public JPanel panelMain;
public JPanel panel2;
public JPanel panel1;
public app(JFrame frame) {
panelMain = new JPanel();
panelMain.setLayout(new BoxLayout(panelMain, BoxLayout.Y_AXIS));
panel2 = new JPanel();
panel2.setLayout(new FlowLayout());
panel2.setBackground(Color.lightGray);
panel1 = new JPanel();
panel1.setLayout(new BoxLayout(panel1, BoxLayout.X_AXIS));
panel1.setBackground(Color.ORANGE);
panelMain.add(panel2);
panelMain.add(panel1);
catLabel= new JLabel("Willkommen zum Quizzeln ! \n Wählen Sie Ihre Kategorie");
catLabel.setBounds(90,10,260,40);
panel2.add(catLabel);
cat1Button = new JButton("Kategorie 1");
cat1Button.setBounds(52,90,120,40);
panel2.add(cat1Button);
cat2Button = new JButton("Kategorie 2");
cat2Button.setBounds(220,90,120,40);
panel2.add(cat2Button);
cat3Button = new JButton("Kategorie 3");
cat3Button.setBounds(52,160,120,40);
panel2.add(cat3Button);
cat4Button = new JButton("Kategorie 4");
cat4Button.setBounds(220,160,120,40);
panel2.add(cat4Button);
editButton = new JButton("Frage editieren");
editButton.setBounds(52,400,120,40);
panel1.add(editButton);
frame.add(panelMain);
}
public static void main(String[] args) {
JFrame fram = new JFrame("app");
new app(fram);
fram.pack();
fram.setVisible(true);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.