gpt4 book ai didi

Java JPanels 在框架中不可见

转载 作者:行者123 更新时间:2023-12-01 17:13:04 25 4
gpt4 key购买 nike

有人可以解释一下为什么我的框架只显示 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

最佳答案

JFrame 内容 Pane 的默认布局管理器是 BorderLayout。

默认情况下,当您向框架添加组件时,组件将被添加到 BorderLayout 的中心。问题是只能添加一个组件,因此只显示最后添加的一个组件。

您可以尝试以下操作:

add(p1, BorderLayout.NORTH);

或者您可以创建一个 JPanel,将 p1、p2 组件添加到面板中,然后将面板添加到框架中。

阅读 Swing 教程中关于 Layout Managers 的部分有关使用布局管理器的更多信息和示例,以及向您展示如何在事件调度线程上创建 GUI 的示例。

关于Java JPanels 在框架中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com