簡體   English   中英

關閉框架java后重新啟用按鈕

[英]RE-enable a button after closing a frame java

所以我正在為我的項目制作程序。 當我單擊一個按鈕時,它必須打開另一個框架,並使該按鈕不可單擊。 當您關閉彈出框時,必須重新啟用該按鈕。 所以這是

我的主機

    package Option2;
    import javax.swing.event.*;
    import javax.swing.*;

    import java.awt.*;
    import java.awt.event.*;

    public class MainMenu {
        int intCtr1 = 0;
        JFrame frame1 = new JFrame("EXD LAN PARTY");
        JButton Button1 = new JButton();
        JButton Button2 = new JButton();
        JButton Button3 = new JButton();
        JButton Button4 = new JButton();
        JLabel Label1 = new JLabel();
        public void MainMenu(){
            //BUTTON1
            Button1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/PI2.jpg")));
            Button1.setBackground(Color.white);
            Button1.setBounds(50, 350, 150, 150);
            Button1.setToolTipText("Personal Info");
            //BUTTON1 END
            //BUTTON2
            Button2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/PC.jpg")));
            Button2.setBackground(Color.white);
            Button2.setBounds(250, 350, 150, 150);
            Button2.setToolTipText("PC INFO");
            //BUTTON2 END
            //BUTTON3
            Button3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/Games.jpg")));
            Button3.setBackground(Color.white);
            Button3.setBounds(450, 350, 150, 150);
            Button3.setToolTipText("Games");
            //BUTTON3 END
            //BUTTON4 END
            Button4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/Players.jpg")));
            Button4.setBackground(Color.white);
            Button4.setBounds(650, 350, 150, 150);
            Button3.setToolTipText("Players");
            //BUTTON4 END
            //LABEL1
            Label1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/EXD.jpg")));
            Label1.setBounds(50, 50, 800, 250);
            //LABEL1 END
            //Frame1
            frame1.getContentPane().setBackground(Color.black);
            frame1.setResizable(false);
            frame1.setLayout(null);
            frame1.setSize(870,650);
            frame1.setVisible(true);
            frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame1.add(Label1);
            frame1.add(Button1);
            frame1.add(Button2);
            frame1.add(Button3);
            frame1.add(Button4);
            //Frame1 END
            Button1.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent a){ 
                    PersonalInfo objPI = new PersonalInfo();
                    objPI.Menu1();
                    Button1.setEnabled(false);
                }   
            });
            Button2.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent a){ 
                    PCInfo objPCI = new PCInfo();
                    objPCI.Menu2();
                }   
            });
            Button3.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent a){ 
                    Games objGames = new Games();
                    objGames.Menu3();
                }   
            });
            Button4.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent a){ 
                    Players objPlayers = new Players();
                    objPlayers.Menu4();
                }   
            });
        }
        public void dim1(){
            if(intCtr1 == 1){
                MainMenu objMM  = new MainMenu();
                objMM.Button1.setEnabled(true);
                System.out.println("SD");
            }
        }
    }

**and this is my sub frame**
 package Option2;
import javax.swing.event.*;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
public class PersonalInfo {
    String[] arrSex = {"Male","Female"};
    JFrame frame1 = new JFrame("Personal Info");
    JLabel label1 = new JLabel("ID");
    JLabel label2 = new JLabel("Last Name");
    JLabel label3 = new JLabel("First Name");
    JLabel label4 = new JLabel("Middle Name");
    JLabel label5 = new JLabel("SEX");
    JLabel label6 = new JLabel();
    JTextField tf1 = new JTextField();
    JTextField tf2 = new JTextField();
    JTextField tf3 = new JTextField();
    JTextField tf4 = new JTextField();
    JComboBox CB1 = new JComboBox(arrSex);
    JButton Button1 = new JButton("NEW");
    JButton Button2 = new JButton("SAVE");
    JButton Button3 = new JButton("EDIT");
    JButton Button4 = new JButton("CANCEL");
    JButton Button5 = new JButton();
    JButton Button6 = new JButton();
    JButton Button7 = new JButton();
    JButton Button8 = new JButton();
    public void Menu1(){
                //Frame1
                frame1.add(label6);
                frame1.add(label1);
                frame1.add(tf1);
                frame1.add(label2);
                frame1.add(tf2);
                frame1.add(label3);
                frame1.add(tf3);
                frame1.add(label4);
                frame1.add(tf4);
                frame1.add(label5);
                frame1.add(CB1);
                frame1.add(Button1);
                frame1.add(Button2);
                frame1.add(Button3);
                frame1.add(Button4);
                frame1.add(Button5);
                frame1.add(Button6);
                frame1.add(Button7);
                frame1.add(Button8);
                frame1.setVisible(true);
                frame1.getContentPane().setBackground(Color.black);
                frame1.setSize(600,600);
                frame1.setResizable(false);
                frame1.setLayout(null);
                frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame1.addWindowListener(new WindowAdapter()
                {
                    public void windowClosing(WindowEvent e)
                    {
                        MainMenu objMM = new MainMenu();
                        objMM.intCtr1=1;
                        objMM.dim1();
                    }
                });
                //Frame1 End
                //LABEL6
                label6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/PI.jpg")));
                label6.setBounds(30, 5, 800, 250);
                //LABEL6 END
                //LABEl1 
                label1.setBounds(100, 220, 50,50);
                label1.setForeground(Color.white);
                label1.setFont(new Font("Serif", Font.BOLD, 18));
                //Label1 end
                //Tf
                tf1.setBounds(130, 230, 400,30);
                tf1.setEnabled(false);
                SmartC objSMC = new SmartC();
                tf1.setText(objSMC.SmartCounter("ABC123415XYZS"));
                //tf end
                //label2
                label2.setBounds(35, 255, 120,50);
                label2.setForeground(Color.white);
                label2.setFont(new Font("Serif", Font.BOLD, 18));
                //label2 end
                //Tf2
                tf2.setBounds(130, 270, 400,30);
                //tf2 end
                //label3
                label3.setBounds(35, 295, 120,50);
                label3.setForeground(Color.white);
                label3.setFont(new Font("Serif", Font.BOLD, 18));
                //label3 end
                //Tf3
                tf3.setBounds(130, 310 , 400, 30);
                //tf3 end
                //label4
                label4.setBounds(15, 335, 120,50);
                label4.setForeground(Color.white);
                label4.setFont(new Font("Serif", Font.BOLD, 18));
                //label4 end
                //Tf4
                tf4.setBounds(130, 350 , 400, 30);
                //tf4 end
                //label4
                label5.setBounds(85, 375, 120,50);
                label5.setForeground(Color.white);
                label5.setFont(new Font("Serif", Font.BOLD, 18));
                //label4 end
                //cb1
                CB1.setBounds(130, 390, 100, 30);
                CB1.setBackground(Color.white);
                //cb1 end
                //button1
                Button1.setBounds(35, 450, 100, 30);
                Button1.setBackground(Color.white);
                //
                //
                Button2.setBounds(150, 450, 100, 30);
                Button2.setBackground(Color.white);
                //
                //
                Button3.setBounds(335, 450, 100, 30);
                Button3.setBackground(Color.white);
                //
                //
                Button4.setBounds(450, 450, 100, 30);
                Button4.setBackground(Color.white);
                //
                //
                Button5.setBounds(35, 500, 100, 50);
                Button5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/First.jpg")));
                Button5.setBackground(Color.white);
                //
                //
                Button6.setBounds(150, 500, 100, 50);
                Button6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/Previous.jpg")));
                Button6.setBackground(Color.white);
                //
                //
                Button7.setBounds(335, 500, 100, 50);
                Button7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/Next.jpg")));
                Button7.setBackground(Color.white);
                //
                //              
                Button8.setBounds(450, 500, 100, 50);
                Button8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Option2/Last.jpg")));
                Button8.setBackground(Color.white);
                //
                //
    }
}

關於我的編碼的任何建議均被接受。 抱歉,仍在學習Java :)

當我單擊一個按鈕時,它必須打開另一個框架

您不應該創建另一個JFrame。

相反,您應該創建一個modal JDialog 在對話框關閉之前,該對話框將不允許您單擊框架。

關於我的編碼的任何建議均被接受

遵循Java命名約定。 變量名稱不應以大寫字母開頭。 有時您遵循此准則,有時則不遵循。 始終如一!

不要使用setBounds(...) Swing旨在與layout managers一起使用!

首先,請閱讀Java命名約定

您需要將MainMenu的引用傳遞給PersonalInfo才能實現所需的功能,這里:

button1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent a){ 
                PersonalInfo objPI = new PersonalInfo(this);
                objPI.menu1();
                button1.setEnabled(false);
            }   
        });

並且您需要向PersonalInfo添加一個構造函數:

private MainMenu m;
public PersonalInfo(MainMenu m) {
    this.m = m;
}

向MainMenu添加一個公共方法:

public void enableMyButton() {
        button1.setEnabled(true);
    }

現在,您可以將事件偵聽器添加到PersonalInfo以啟用MainMenu框架的按鈕:

frame1.addWindowListener(new WindowAdapter()
            {
                public void windowClosing(WindowEvent e)
                {
                    this.m.enableMyButton();
                }
            });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM