月夜归醉 2015-03-12 15:36 采纳率: 0%
浏览 723

自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙!

/*题目是这样的:创建一个窗体,在其中摆放两个内容面板,对两个面板进行边框个性化设置。
初始状态为第二个面板不可见,当单击第一个面板中的“打开”按钮时,第二个面板即可见;
当单击第一个面板中的“关闭”按钮时,第二个面板消失。

以下是我结合书本写的代码,不知道为什么运行不了???*/
import javax.swing.*;
import java.awt.*;
import javax.swing.border.EtchedBorder;
import java.awt.event.*;
public class PanelFrm extends javax.swing.JFrame {
public PanelFrm() { //构造函数
initialize();
// initComponents();
}
public static void main(String args[]) {// 程序入口
PanelFrm frm=new PanelFrm();
frm.setVisible(true);

}

private void initialize(){// 初始化成员变量
setSize(300,200);
setTitle("Exerice");
jButton1=getBtnAppear();
jButton2=getBtnDisappear();
jPanel1=getPnlPanel1();
jPanel2=getPnlPanel2();
jPanel3=getJContentPane();
add(jPanel3);

}
private JPanel getPnlPanel1(){  //        初始化容器1
    if(jPanel1==null){
        GridBagConstraints gridBagConstraints1=new GridBagConstraints();
        gridBagConstraints1.gridx=2;
        gridBagConstraints1.gridy=1;
        GridBagConstraints gridBagConstraints=new GridBagConstraints();
        gridBagConstraints.gridx=0;
        gridBagConstraints.gridy=1;
        jPanel1=new JPanel();
        jPanel1.setVisible(true);
        jPanel1.setLayout(new GridBagLayout());
        jPanel1.setBounds(new Rectangle(41,18,217,47));
        jPanel1.setBorder(BorderFactory.createLineBorder(Color.red,1));
        jPanel1.add(getBtnAppear(),gridBagConstraints);  //往容器1添加两个按钮
        jPanel1.add(getBtnDisappear(),gridBagConstraints);
    }
    return jPanel1;
}
private JPanel getPnlPanel2(){   //初始化容器2
    if(jPanel2==null){
        jPanel2=new JPanel();
        jPanel2.setLayout(new GridBagLayout());
        jPanel2.setBounds(new Rectangle(41,86,217,52));
        jPanel2.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
        jPanel2.setVisible(false);
    }
    return jPanel2;
}
private JButton getBtnAppear(){   //按钮1
    if(jButton1==null){
        jButton1=new JButton();
        jButton1.setText("打开");
         jButton1.setVisible(true);
        jButton1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                jPanel2.setVisible(true);
                jButton1.setVisible(false);
                jButton2.setVisible(true);

            }
        });
    }
    return jButton1;
}
 private JButton getBtnDisappear(){  //按钮2
    if(jButton2==null){
        jButton2=new JButton();
        jButton2.setText("关闭");
        jButton1.setVisible(false);
        jButton1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                jPanel2.setVisible(false);
                jButton1.setVisible(true);
                jButton2.setVisible(false);

            }
        });

    }
    return jButton2;
}

private JPanel getJContentPane(){   //容器3
    if(jPanel3==null){
        jPanel3=new JPanel();
        jPanel3.setVisible(true);
        jPanel3.setLayout(null);
        jPanel3.add(getPnlPanel1(),null);
        jPanel3.add(getPnlPanel2(),null);
    }
    return jPanel3;
}

//类成员变量

private JPanel jPanel1=null;
private JPanel jPanel2=null;
private JButton jButton1=null;
private JButton jButton2=null;
private JPanel jPanel3=null;
// Variables declaration - do not modify                     
private javax.swing.JProgressBar jProgressBar1;
// End of variables declaration                   

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 对于相关问题的求解与代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料
    • ¥15 使用R语言marginaleffects包进行边际效应图绘制
    • ¥20 usb设备兼容性问题
    • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
    • ¥15 安装svn网络有问题怎么办