我创建了多个内部窗体,但是发现当我关闭名为a的内部窗体,然后在想打开名为a的内部窗体就打不开了,就是说一个内部窗体只能显示一次。当关闭后就在无法显示,只能重新启动程序。
这为什么?应该怎么做?
谢谢各位大侠!!!

解决方案 »

  1.   

    package jinxiaocun;/**
     * 注册
     */
    import javax.swing.JInternalFrame;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JPasswordField;
    import javax.swing.JComboBox;
    import javax.swing.JPanel;
    import javax.swing.event.InternalFrameEvent;
    import javax.swing.event.InternalFrameListener;
    import javax.swing.JOptionPane;import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.GridLayout;
    public class LoginInternalFrameClass extends JInternalFrame{//注册窗体
        public LoginInternalFrameClass() {
            super("注册",false,true,false,true);
            setSize(350,500);
            setLayout(new GridLayout(5,1));
            panelName=new JPanel();
            textName=new JTextField(15);
            panelName.add(new JLabel("账号"));
            panelName.add(textName);        panelPassword=new JPanel();
            textPassword=new JPasswordField(15);
            panelPassword.add(new JLabel("密码"));
            panelPassword.add(textPassword);        panelPasswordOK=new JPanel();
            textPasswordOK=new JPasswordField(15);
            panelPasswordOK.add(new JLabel("确认密码"));
            panelPasswordOK.add(textPasswordOK);        panelType=new JPanel();
            textType=new JComboBox();
            textType.setEditable(true);
            textType.addItem("");
            textType.addItem("普通用户");
            textType.addItem("VIP");
            textType.addItem("管理员");
            panelType.add(new JLabel("身份"));
            panelType.add(textType);        panelButton=new JPanel();
            buttonOK=new JButton("确定");
            buttonNewly=new JButton("重置");
            buttonExit=new JButton("退出");        buttonOK.addActionListener(actionListener);
            buttonNewly.addActionListener(actionListener);
            buttonExit.addActionListener(actionListener);        panelButton.add(buttonOK);
            panelButton.add(buttonNewly);
            panelButton.add(buttonExit);        addInternalFrameListener(internalListener);        add(panelName);
            add(panelPassword);
            add(panelPasswordOK);
            add(panelType);
            add(panelButton);
        }
        private class InternalFrameClassListener implements InternalFrameListener{
            public void internalFrameOpened(InternalFrameEvent e) {
            }        public void internalFrameClosing(InternalFrameEvent e) {
                int i=JOptionPane.showConfirmDialog(null,"是否退出");
                if(i==0){
                    setVisible(true);
                }
            }        public void internalFrameClosed(InternalFrameEvent e) {
            }        public void internalFrameIconified(InternalFrameEvent e) {
            }        public void internalFrameDeiconified(InternalFrameEvent e) {
            }        public void internalFrameActivated(InternalFrameEvent e) {
            }        public void internalFrameDeactivated(InternalFrameEvent e) {
            }    }
        private class LoginActionListener implements ActionListener{
            public void actionPerformed(ActionEvent event){
                String name=String.valueOf(textName.getText());
                String password=String.valueOf(textPassword.getPassword());
                String passwordOK=String.valueOf(textPasswordOK.getPassword());
                String type=String.valueOf(textType.getSelectedItem());
               if(event.getSource()==buttonOK){
                   if(isLogin(name,password,passwordOK,type)){
                       if(sql.isLoginSqlServer(name,password,passwordOK,type)){
                           JOptionPane.showMessageDialog(null,"注册成功");
                           textName.setText("");
                           textPassword.setText("");
                           textPasswordOK.setText("");
                           textType.setSelectedItem("");
                       }
                       else{
                           JOptionPane.showMessageDialog(null,"系统繁忙,请与管理员联系!");
                       }
                   }
               }
               else if(event.getSource()==buttonNewly){
                   textName.setText("");
                   textPassword.setText("");
                   textPasswordOK.setText("");
                   textType.setSelectedItem("");
               }
               else if(event.getSource()==buttonExit){
                   int i=JOptionPane.showConfirmDialog(null,"是否退出");
                   if(i==0){
                       setVisible(false);
                   }
               }
            }
        }
        public boolean isLogin(String name,String password,String passwordOK,String type){
            if(name.equals("")){
                JOptionPane.showMessageDialog(null,"用户名不能为空");
                return false;
            }
            else if(name.length()<6){
                JOptionPane.showMessageDialog(null,"用户名长度不对");
                return false;
            }
            else if(name.length()>20){
                JOptionPane.showMessageDialog(null,"用户名长度超过范围");
                return false;
            }
            else if(password.equals("")){
                JOptionPane.showMessageDialog(null,"密码不能为空");
                return false;
            }
            else if(password.length()<6){
                JOptionPane.showMessageDialog(null,"密码长度不对");
                return false;
            }
            else if(password.length()>20){
                JOptionPane.showMessageDialog(null,"密码超过范围");
                return false;
            }
            else if(!passwordOK.equals(password)){
                JOptionPane.showMessageDialog(null,"密码和密码确认不一样");
                return false;
            }
            else if(type.equals("")){
                JOptionPane.showMessageDialog(null,"身份不能为空");
                return false;
            }
            return true;
        }
        private MySql sql=new MySql();
        private LoginActionListener actionListener=new LoginActionListener();
        private InternalFrameClassListener internalListener=new InternalFrameClassListener();
        private JPanel panelName,panelPassword,panelPasswordOK,panelType,panelButton;
        private JTextField textName;
        private JPasswordField textPassword,textPasswordOK;
        private JComboBox textType;
        private JButton buttonOK,buttonNewly,buttonExit;
    }
      

  2.   


    public class TestFrame extends javax.swing.JFrame {
        
        /** Creates new form TestFrame */
        public TestFrame() {
            initComponents();
        }    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">
        private void initComponents() {
            jFrame1 = new javax.swing.JFrame();
            jButton1 = new javax.swing.JButton();
            jButton2 = new javax.swing.JButton();        org.jdesktop.layout.GroupLayout jFrame1Layout = new org.jdesktop.layout.GroupLayout(jFrame1.getContentPane());
            jFrame1.getContentPane().setLayout(jFrame1Layout);
            jFrame1Layout.setHorizontalGroup(
                jFrame1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 400, Short.MAX_VALUE)
            );
            jFrame1Layout.setVerticalGroup(
                jFrame1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 300, Short.MAX_VALUE)
            );        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jButton1.setText("jButton1");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });        jButton2.setText("jButton2");
            jButton2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton2ActionPerformed(evt);
                }
            });        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(44, 44, 44)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                        .add(jButton2)
                        .add(jButton1))
                    .addContainerGap(283, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(87, 87, 87)
                    .add(jButton1)
                    .add(25, 25, 25)
                    .add(jButton2)
                    .addContainerGap(142, Short.MAX_VALUE))
            );
            pack();
        }// </editor-fold>    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO 将在此处添加您的处理代码:
            this.jFrame1.setVisible(false);
        }    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO 将在此处添加您的处理代码:
            this.jFrame1.setVisible(true);
        }
            public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new TestFrame().setVisible(true);
                }
            });
        }
        
        // 变量声明 - 不进行修改
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JFrame jFrame1;
        // 变量声明结束
        
    }