学习Swing组件对话框时犯的低级错误

由于缺乏面向对象编程经验而犯的一个低级错误

我先是创建了一个对话框类

class MyDialog extends JDialog{                              //自定义一个对话框类
    MyDialog(Example frame){                                     //定义对话框构造方法
        JDialog jd=new JDialog(frame, "第一个Dialog窗体", true);   //新建一个对话框jd
        Container container=jd.getContentPane();                //为对话框jd添加窗格容器
        container.add(new JLabel("这是一个对话框"));                //在对话框窗格中新建一个标签
        jd.setBounds(120, 120, 100, 100);                       //设置对话框范围

然后在主窗口设置点击事件监听器

jb.addActionListener(                                 //为jb按钮设置点击事件监听器
                new ActionListener() {                        //新建一个点击事件监听器

                    @Override
                    public void actionPerformed(ActionEvent e) {   //设置点击后触发的事件
                        // TODO Auto-generated method stub
                        new MyDialog(Example.this).setVisible(true);//弹出一个新建的对话框并设置为可见
                    }}
                );

然后就出现了点击按钮弹出的是空对话框
空对话框

后来仔细看了看自己的代码,才发现设置对话框是否可见时.setVisible(true)用错了地方,我写的new MyDialog(Example.this).setVisible(true);调用了自定义对话框类MyDialog的构造方法,而MyDialog继承了JDialog类,所以在MyDialog的构造方法里会自动调用父类的构造方法来构造子类继承父类的部分,所以就创建了一个空对话框,而在子类构造方法中又自己新建了一个JDialog的对话框并加入了标签。所以就创建了两个窗口但是设置可见性时我并没有对加入标签的对话框设置可见,相反直接对父类构造方法创建的空对话框设置了可见。所以正确的代码

class MyDialog extends JDialog{                              //自定义一个对话框类
    MyDialog(Example frame){                                     //定义对话框构造方法
        super(frame, "第一个Dialog窗体", true);   //新建一个对话框jd
        Container container=getContentPane();                //为对话框jd添加窗格容器
        container.add(new JLabel("这是一个对话框"));                //在对话框窗格中新建一个标签
        setBounds(120, 120, 100, 100);                     //设置对话框边界


                    @Override
                    public void actionPerformed(ActionEvent e) {   //设置点击后触发的事件
                        // TODO Auto-generated method stub
                        new MyDialog(Example.this).setVisible(true);//弹出一个新建的对话框并设置为可见
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值