我在一本资料上,看到这样一句话:向JFrame中添加组件时,必先取得ContentPane,然后再使用add()方法把组件添加到此ContentPane中。
而我写的这个小程序却可以运行。是书上说的有问题,还是怎么了,我有点搞不明白。import javax.swing.*;
import java.awt.*;public class JTrameTest {
public static void main(String[]args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
MyTest frame=new MyTest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class MyTest extends JFrame
{
private Button but;
private JLabel lab;
public MyTest()
{
setTitle("MyTest");
setSize(200,200);
but=new Button("确定");
lab=new JLabel("取消");
add(but,BorderLayout.SOUTH);
add(lab,BorderLayout.NORTH);
}
}
而我写的这个小程序却可以运行。是书上说的有问题,还是怎么了,我有点搞不明白。import javax.swing.*;
import java.awt.*;public class JTrameTest {
public static void main(String[]args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
MyTest frame=new MyTest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class MyTest extends JFrame
{
private Button but;
private JLabel lab;
public MyTest()
{
setTitle("MyTest");
setSize(200,200);
but=new Button("确定");
lab=new JLabel("取消");
add(but,BorderLayout.SOUTH);
add(lab,BorderLayout.NORTH);
}
}
解决方案 »
- 从数据库中读数据在table中显示的问题
- File类中的mkdirs与mkdir有什么不同????
- [求助]如何在java中获得windows系统颜色
- snmp
- SQLite的Java中午问题:我用java存取SQLite,有中文的出现乱码
- 急,如何在JTextPane中删除原来的图片,然后我再加入新的图片?
- 关与Applet的菜鸟问题
- 如何从Java SDK得到一个线程安全的HashMap
- 问一下在那里可以下到关于java的帮助,类似MSDN的那种帮助!谢谢了
- 请问如何把byte[]转化为float
- 关于用jxl操作excel表的问题请教
- 起一个线程,之后让它sleep,为什么main线程也跟着不动了?
那下面这个程序,该怎么解释,import java.awt.*;
import javax.swing.*;
public class c1_4 {
public c1_4()
{
JFrame f=new JFrame();
Button button=new Button("dkfd");
JLabel lab=new JLabel("dfdfjljlj");
f.add(button,BorderLayout.NORTH);
f.add(lab,BorderLayout.SOUTH);
f.pack();
f.setSize(300,300);
f.setVisible(true);
}
public static void main(String[]args)
{
new c1_4();
}}
getContentPane() 是为了创建容器,
有点像你看电视领导喝茶吧,喝茶下面还那个盘子,盘子上面才是茶杯子,那个盘子可要可不要。
世界上没有绝对的事情,你多调试下就行,只要编译没有问题,能出结果就是对的!
你可以直接用JFrame f=new JFrame() 再用f.add();
刚才那个类继承了JFrame所以也可以直接用add();
当然你也也可以先得到该窗体的容器 Container t=this.getContentPane();再用t.add();
没看出代码有什么问题