0

(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);
    }}}

私はそれが最良のコードではないことを知っています。それは機能していて、私はそれに満足しています。私の問題は、「この」リスナーを使用できないことです。誰かがこの単純な問題で私を助けるために少し時間をとってくれることを願っています. これをすべて読んでくれてありがとう。

4

1 に答える 1

2

次のように入力して、ActionListener をボタンに追加できます。

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

(frameKontraestGame クラスに記述したコードが、そのコンストラクター内で jframe を開始すると仮定します)

複数のボタンからのアクションを処理したい場合は、別のクラスを書くことができます。インターフェイスActionListenerを実装するActionHandler(またはクラスに付けたい名前)。次に、actionPerformed 関数内で、ev.getSource() (ev は ActionEvent 変数) メソッドを使用して、preesed されたボタンを検出できます。

于 2013-06-02T14:54:29.887 に答える