1,用JPanel panel=new JPanel();
panel.setLayout(new GridbagLayout());
frame.add(panel);
与用Container myContentPane=this.getContentPane();
myContentPane.setLayout(new GridbagLayout());
的区别是不是JPanel需要添加到容器,即frame.add(panel);
而Container这个dd是JFrame自带的相当于JPanel的容器吗?这两者还有其他区别吗?那个用好一点?
2,public static void main(String[] args) {
setDefaultLookAndFeelDecorated(true);
new Calculator("简易计算器");
}中设置窗体外观时,为什么用new Calculator("简易计算器").setDefaultLookAndFeelDecorated(true);这样设置不行,我觉得
静态方法用实例来访问也是可以的
panel.setLayout(new GridbagLayout());
frame.add(panel);
与用Container myContentPane=this.getContentPane();
myContentPane.setLayout(new GridbagLayout());
的区别是不是JPanel需要添加到容器,即frame.add(panel);
而Container这个dd是JFrame自带的相当于JPanel的容器吗?这两者还有其他区别吗?那个用好一点?
2,public static void main(String[] args) {
setDefaultLookAndFeelDecorated(true);
new Calculator("简易计算器");
}中设置窗体外观时,为什么用new Calculator("简易计算器").setDefaultLookAndFeelDecorated(true);这样设置不行,我觉得
静态方法用实例来访问也是可以的
{
JFrame.setDefaultLookAndFeelDecorated(true); --这样调用的
....................................
}至于你说的要先增加一个组件的问题:
我也在书上面看到过:
解释如下:
JFrame是一个Frame类的子类,但是Frame和JFrame中添加组件时采用的方法不同。在JFrame实例中增加一个组件,不是直接用add()方法,而是先调用如下方法得到JFrame的内容窗格:
Container getContentPane()
然后使用容器的add()方法在内容窗格中增加一个组件.方法如下所示:
void add(comp)
这里,comp是增加到内容窗格中的组件.
如:要在frame中添加按钮b,方法如下
frame.getContentPane().add(b);可是我也试过了可直接添加的
如
public class Test
{
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
new MyFrame();
}
}class MyFrame extends JFrame
{
public MyFrame()
{
setTitle("Test");
setDefaultCloseOperation(EXIT_ON_CLOSE);
MyPanel panel = new MyPanel();
add(panel);
setSize(400,300);
setVisible(true);
}
}public MyPanel extends Panel
{
private JButton btn = new JButton("退出");
public MyPanel()
{
add(btn);
}
}可以直接用add添加啊!对此我也很迷惑.
如果你JPanel panel=new JPanel(...
然后frame.add(panel)
是在frame的内容窗格(ContentPane)中又增加了一个容器panel,如果你不frame.add(panel),则这个panel和frame没任何关系;
frame的ContentPane是Container的子类,
可以了解一个面向对象的知识.
关于2:
如果你的类中(包括父类中)有setDefaultLookAndFeelDecorated(),就可以使用new 类名().setDefaultLookAndFeelDecorated(...);来调用.