如何将多个带有标签的面板添加到一个框架中?
How to add several panels with labels to a single frame?
我正在学习 Java 秋千,我正在创建一个框架,我想向其中添加多个不同方向的面板,如下面的代码 jpanet_1
和 jpanel_2
它们每个都有使用 setBound()
方法设置的特定尺寸。
问题在运行时,“hello world”只出现在第二个面板中,没有出现在第一个面板中。我尝试切换将两个面板添加到主框架的顺序,如下所示:
jFrame_2.add(jPanel_2);
jFrame_2.add(jPanel_1);
但是,“hello world”仅添加到 panel_2。
请告诉我如何将两个面板添加到框架中,以便语句“hello world”出现在两个面板中
正如您在代码中看到的,我为要添加到框架的每个面板指定了尺寸,然后添加它,还有其他推荐的方法可以将面板添加到框架吗?
代码:
public class GUI_01 {
JFrame jFrame_1;
JFrame jFrame_2;
JPanel jPanel_1;
JPanel jPanel_2;
final JLabel jLabel_Hello = new JLabel("Hello World");
JOptionPane jOptions;
final String[] options = {"yes", "no", "maybe"};
public GUI_01() {
// TODO Auto-generated constructor stub
setUpGUI1();
setUpGUI2();
}
private void setUpGUI2() {
// TODO Auto-generated method stub
jFrame_2 = new JFrame("Border Demo");
jPanel_1 = new JPanel();
jPanel_2 = new JPanel();
jPanel_1.setBorder(BorderFactory.createTitledBorder("title"));
jPanel_1.setBounds(30, 100, 110, 300);
jPanel_1.add(jLabel_Hello);
jPanel_2.setBorder(BorderFactory.createLoweredBevelBorder());
jPanel_2.setBounds(20, 50, 120, 80);
jPanel_2.add(jLabel_Hello);
jFrame_2.setBounds(0, 0, 600, 600);
jFrame_2.add(jPanel_1);
jFrame_2.add(jPanel_2);
jFrame_2.setVisible(true);
}
您需要使用布局。就个人而言,我最喜欢的布局是 GridBagLayout,它允许您准确选择事物的去向(例如 table,具有自定义行和列)。您可以了解更多 here。希望这对您有所帮助,祝您好运。
the problem is at run time, "hello world" appears only in the second panel and does not appear in
没错。一个组件只能有一个父组件。
如果您想要文本 "Hello World",则需要创建两个 JLabel 并将其中一个标签添加到每个面板。
JLabel label1 = new JLabel("Hello World");
JPanel panel1 = new JPanel();
panel1.add( label1 );
JLabel label2 = new JLabel("Hello World");
JPanel panel2 = new JPanel();
panel2.add( label2 );
I tried to use gridlayout but i could not place a jpanel in a specific cell of gridlayout..
您不能只是将组件添加到随机单元格中。您必须在每个单元格中都有组件,或者在 GridBagLayout 的情况下,组件可以跨越多个单元格。
我正在学习 Java 秋千,我正在创建一个框架,我想向其中添加多个不同方向的面板,如下面的代码 jpanet_1
和 jpanel_2
它们每个都有使用 setBound()
方法设置的特定尺寸。
问题在运行时,“hello world”只出现在第二个面板中,没有出现在第一个面板中。我尝试切换将两个面板添加到主框架的顺序,如下所示:
jFrame_2.add(jPanel_2);
jFrame_2.add(jPanel_1);
但是,“hello world”仅添加到 panel_2。
请告诉我如何将两个面板添加到框架中,以便语句“hello world”出现在两个面板中
正如您在代码中看到的,我为要添加到框架的每个面板指定了尺寸,然后添加它,还有其他推荐的方法可以将面板添加到框架吗?
代码:
public class GUI_01 {
JFrame jFrame_1;
JFrame jFrame_2;
JPanel jPanel_1;
JPanel jPanel_2;
final JLabel jLabel_Hello = new JLabel("Hello World");
JOptionPane jOptions;
final String[] options = {"yes", "no", "maybe"};
public GUI_01() {
// TODO Auto-generated constructor stub
setUpGUI1();
setUpGUI2();
}
private void setUpGUI2() {
// TODO Auto-generated method stub
jFrame_2 = new JFrame("Border Demo");
jPanel_1 = new JPanel();
jPanel_2 = new JPanel();
jPanel_1.setBorder(BorderFactory.createTitledBorder("title"));
jPanel_1.setBounds(30, 100, 110, 300);
jPanel_1.add(jLabel_Hello);
jPanel_2.setBorder(BorderFactory.createLoweredBevelBorder());
jPanel_2.setBounds(20, 50, 120, 80);
jPanel_2.add(jLabel_Hello);
jFrame_2.setBounds(0, 0, 600, 600);
jFrame_2.add(jPanel_1);
jFrame_2.add(jPanel_2);
jFrame_2.setVisible(true);
}
您需要使用布局。就个人而言,我最喜欢的布局是 GridBagLayout,它允许您准确选择事物的去向(例如 table,具有自定义行和列)。您可以了解更多 here。希望这对您有所帮助,祝您好运。
the problem is at run time, "hello world" appears only in the second panel and does not appear in
没错。一个组件只能有一个父组件。
如果您想要文本 "Hello World",则需要创建两个 JLabel 并将其中一个标签添加到每个面板。
JLabel label1 = new JLabel("Hello World");
JPanel panel1 = new JPanel();
panel1.add( label1 );
JLabel label2 = new JLabel("Hello World");
JPanel panel2 = new JPanel();
panel2.add( label2 );
I tried to use gridlayout but i could not place a jpanel in a specific cell of gridlayout..
您不能只是将组件添加到随机单元格中。您必须在每个单元格中都有组件,或者在 GridBagLayout 的情况下,组件可以跨越多个单元格。