黑马程序员技术交流社区
标题:
下列代码为什么没有在JFrame窗体中显示标签??
[打印本页]
作者:
张海涛
时间:
2013-1-16 01:57
标题:
下列代码为什么没有在JFrame窗体中显示标签??
class MyJDialog extends JDialog { // 创建新类继承JDialog类
public MyJDialog(MyFrame frame) {
// 实例化一个JDialog类对象,指定对话框的父窗体、窗体标题和类型
super(frame,"第一个JDialog窗体", true);
Container container = getContentPane(); // 创建一个容器
container.add(new JLabel("这是一个对话框")); // 在容器中添加标签
setBounds(120, 120, 100, 100); // 设置对话框窗体大小
}
}
public class MyFrame extends JFrame { // 创建新类
public static void main(String args[]) {
new MyFrame(); // 实例化MyJDialog类对象
}
public MyFrame() {
Container container = getContentPane(); // 创建一个容器
setLayout(null);
JLabel jl = new JLabel("这是一个JFrame窗体"); // 在窗体中设置标签
// 将标签的文字置于标签中间位置
jl.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jl);
JButton bl = new JButton("弹出对话框"); // 定义一个按钮
bl.setBounds(10, 10, 100, 21);
bl.addActionListener(new ActionListener() { // 为按钮添加鼠标单击事件
public void actionPerformed(ActionEvent e) {
// 使MyJDialog窗体可见
new MyJDialog(MyFrame.this).setVisible(true);
}
});
container.add(bl); // 将按钮添加到容器中
container.add(bl);
container.setBackground(Color.white);
setSize(200, 200);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setVisible(true);
}
}
作者:
罗威
时间:
2013-1-16 16:38
哥们,你主要思考下MyFrame这个类中的这个代码
Container container = getContentPane(); // 创建一个容器
setLayout(null);//这个代码使你将容器的布局设置为NULL了,则你必须要设定容器中每个对象的大小和位置,也就是说你要分别将容器中的每个对象都用setBouns()方法设置一次,不然添加进容器的对象(组件)默认都为NULL,可以理解为setLayout(NULL)就相当于将容器中的每个对象都分别默认设置了setBounds(int x,int y,int width,int height);而其中的四个参数都为0;即setBounds(0,0,0,0);
而jl.setHorizontalAlignment(SwingConstants.CENTER)这句代码只起到一个设置对象的位置的作用,也就是说你只设置了setBounds(int x,int y,int width,int height)中的x和y的值,所以只需要在这句代码上一行或者下一行添加jl.setSize(200,100)就可以了;就可以显示出标签了!
其他代码都不变,你可以改变下 bl.setBounds(10, 10, 100, 21);中四个参数的值,你将21改成10试试看咯,希望我说的对你有帮助!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2