簡體   English   中英

通過單擊Jbutton嘗試打開另一個類的新Jframe

[英]Trying to open new Jframe form another class by clicking a Jbutton

(我剛開始用java編程。)所以這是我的代碼!

Main:

    import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JFrame;

public class buttons {{


        /*Frame creation*/
        final JFrame frameKontrast = new JFrame();
        frameKontrast.setTitle("Main Menu");
        frameKontrast.setSize(500,350);
        frameKontrast.setLocationRelativeTo(null);
        frameKontrast.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



        /*JPanel creation*/
        JPanel panel = new JPanel ();                                                       
        panel.setLayout(new GridLayout(0, 1));                                              




        /*Okno dialogowe*/
        final JLabel dialog = new JLabel();                                                     
        dialog.setText("<html>Jestem bardzo długim bezsensownym dialogiem mam nawet kolejną bardzo długą bezsensowną część która istnieje tylko po to, by ten tekst był ow wiele, wiele dłuższy niż wszystkie inne oraz aby zmusić się do napisania skryptu ktory robi enter w tekście. Koniec.</html>");
        JMenuBar menuKontrast = new JMenuBar();
        frameKontrast.setJMenuBar(menuKontrast); 

        /*Przyciski wyboru*/
        final JButton przyciskb = new JButton();
        przyciskb.setText("Exit");



        final JButton przyciska = new JButton();                                                    
            przyciska.setText("Start the game");







        /*Rozwijane menu (zadania)*/
        JMenu objectives = new JMenu("Objectives");
        JMenuItem zad1 = new JMenuItem("Zadanie numer 1");
        JMenuItem zad2 = new JMenuItem("Zadanie numer 2");
        JMenuItem zad3 = new JMenuItem("Zadanie numer 3");




        /*Dołączanie obiektów do GUI*/
        panel.add(dialog);                                                                  
        menuKontrast.add(objectives);
        objectives.add(zad1);
        objectives.add(zad2);
        objectives.add(zad3);
        ButtonGroup group = new ButtonGroup();                                              
        group.add(przyciska);
        group.add(przyciskb);
        panel.add(przyciska);
        panel.add(przyciskb);
        frameKontrast.getContentPane().add(panel);
        frameKontrast.getContentPane().add(panel);
        frameKontrast.setVisible(true);
    }};

這是一個我想通過przyciska按鈕打開的新窗口:

    public class frameKontrastGame {{
    {
        JFrame frameKontrastGame = new JFrame();
        frameKontrastGame.setTitle("Kontrast");
        frameKontrastGame.setSize(1000,700);
        frameKontrastGame.setLocationRelativeTo(null);
        frameKontrastGame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel ();                                                       
        panel.setLayout(new GridLayout(0, 1));



        JLabel dialog = new JLabel();                                                       
        dialog.setText("<html>Kontrast</html>");
        JMenuBar menuKontrast = new JMenuBar();
        frameKontrastGame.setJMenuBar(menuKontrast); 
        frameKontrastGame.setVisible(true);
        panel.add(dialog);
        frameKontrastGame.getContentPane().add(panel);
        frameKontrastGame.getContentPane().add(panel);
        frameKontrastGame.setVisible(true);
    }}}

我知道它不是最好的代碼。 它正在工作,我很高興。 我的問題是我不能使用“這個”聽眾。 我希望有人有一點時間來幫助我解決這個簡單的問題。 感謝閱讀所有這些。

您可以通過鍵入將ActionListener添加到按鈕

przyciska.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ev) {
                new frameKontrastGame();                    
            }
});

(假設您在frameKontraestGame類中編寫的代碼在其構造函數中啟動了一個jframe)

如果您想要處理來自多個按鈕的操作,那么您可以編寫另一個類,例如。 將實現接口ActionListener的ActionHandler(或您希望賦予類的任何名稱)。 然后在actionPerformed函數中,您可以使用ev.getSource()(ev是您的ActionEvent變量)方法檢測已預先處理的按鈕。

暫無
暫無

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

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