有人可以解释为什么我的框架只显示p2
而不显示p1
吗?
这经常发生在我身上,我知道我错过了什么。
public class Exercise_16_4 extends JFrame {
private static final long serialVersionUID = 1L;
JLabel[] labels = new JLabel[3];
JTextField[] textFields = new JTextField[3];
JButton[] buttons = new JButton[4];
String[] buttonText = {"Add", "Subtract", "Multiply", "Divide"};
String[] labelText = {"Number 1", "Number 2", "Result"};
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
public Exercise_16_4() {
for (int i = 0; i < labels.length; i++) {
labels[i] = new JLabel(labelText[i]);
textFields[i] = new JTextField();
p1.add(labels[i]);
p1.add(textFields[i]);
}
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton(buttonText[i]);
p2.add(buttons[i]);
}
add(p1);
add(p2);
}
public static void main(String[] args) {
Exercise_16_4 frame = new Exercise_16_4();
frame.setTitle("Exercise 16.4");
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}//main
}//class
答案 0 :(得分:5)
JFrame内容窗格的默认布局管理器是BorderLayout。
默认情况下,当您向框架添加组件时,将添加到BorderLayout的CENTER中。问题是只能添加一个组件,因此只显示添加的最后一个组件。
您可以尝试以下内容:
add(p1, BorderLayout.NORTH);
或者您可以创建一个JPanel,将p1,p2组件添加到面板,然后将面板添加到框架中。
阅读Layout Managers上Swing教程中的部分,了解有关使用布局管理器的更多信息和示例,以及向您展示如何在Event Dispatch Thread
上创建GUI的示例。