我正在研究一个应用程序,我陷入了初期阶段。 我有一个JTextField
在JPanel
在JFrame
。 JTextField
不存在。 如果我使用摆动部件不可见
JPanel p0 = (JPanel) f.getContentPane();
它的工作原理。但与
JPanel p0 = new JPanel();
f.add(p0);
所以问题是:
- 为什么不在现场可见? (最重要的问题)
- 上述两种方法有什么区别?
代码:
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
public class Main
{
static Font fontDefault = new Font("arial", Font.PLAIN, 15);
public static void main (String [ ] args)
{
JFrame f = new JFrame("Liquid");
f.setSize(new Dimension(840, 400));
//f.setIconImage(image);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//JPanel p0 = (JPanel) f.getContentPane();// is it necessary?
JPanel p0 = new JPanel();
p0.setLayout(null);
JPanel p1 = new JPanel();
p1.setLayout(null);
JTextField tfHostName = new JTextField("default text", 20);
tfHostName.setBounds(50, 50, 200, 25);
tfHostName.setFont(fontDefault);
JButton bRequest = new JButton("request");
JButton bReset = new JButton("reset");
JTextArea taTest = new JTextArea("default text", 1, 20);
p0.add(tfHostName);
f.add(p0);
f.add(p1);
p0.add(taTest);
//f.pack();
f.setResizable(false);
f.setVisible(true);
}
}
在此提醒:
它与JPanel p0 = (JPanel) f.getContentPane();
但为什么ID不与第二的办法,这我更舒服?此外,如何添加第二个面板以及如何使每个面板中的组件自动排列?
更新:
我意识到,代码没有摆在首位的工作可能是因为我没有指定的任何坐标/位置......
为更好的帮助,尽快发布[SSCCE](http://sscce.org/),关于JPanel p0 = new JPanel(); short,runnable,compilable f.add(p0); – mKorbel 2013-04-26 11:41:15
EDITED。增加了代码。我想首先这样做,但它不会让我说,这个问题不符合他们的标准...... – mireazma 2013-04-26 12:01:59
'上述两种方法有什么区别?' - 第一种方法使用默认的layot manger 。第二种方法不使用布局管理器。不要使用空布局!不要使用setBounds()!为什么初学者总是玩空布局,然后在不起作用时发出抱怨?我们在此论坛发布的所有示例代码都使用布局管理器。你从哪里得到这个代码,显示你使用空布局?我的建议是忽略该网站。 – camickr 2013-04-26 14:56:51