0

私は問題があります。ゲームを作りました。それを開いたときに、ゲームを開始するには ENTER を押す必要があります (入力するだけです)。「EXIT GAME」というボタン一つでゲームをアップグレードしました。このボタンが原因で、Enter キーが機能しなくなった理由がわかりません。削除すると、もう一度Enterキーを押してゲームをプレイできます。

クリックしたイベントのみをそのボタンまたはこのようなものに設定する必要がありますか? 私を助けてください。

public class LeftPanel extends JPanel implements ActionListener {
    JButton ExitGame;

    public LeftPanel(Tetris tetris) {
        this.tetris = tetris;
        setPreferredSize(new Dimension(400, 480));
        setBackground(Color.getHSBColor(17f, 0.87f, 0.52f));
        add(new JButton("Exit Game"));
        {
            ExitGame.addActionListener(this);
        }
    }

    public void actionPerformed(ActionEvent e) {
        System.exit(0);
    }
}
4

5 に答える 5

1

問題 1 - JButtonUI 内でフォーカス可能な唯一のコンポーネントです。したがって、プログラムを開始すると、デフォルトのフォーカスが得られます。デフォルトのフォーカスがありますが。Enterキーストロークを消費します。

問題 2 -JPanelフォーカス可能ではありません。つまり、キーボード フォーカスを受け取ることができません。あなたの説明から、私はあなたが を使用していると仮定しますKeyListener

問題 3 - KeyListener...KeyListenerを使用すると、登録されているコンポーネントがフォーカス可能でフォーカスがある場合にのみキー イベントに応答します。Key Bindingsを使用することで、これを克服できます。

...ソリューション...

  • JLabelの代わりに使用しJButtonます。MouseListenerこれには、マウス クリックの通知を受け取るためにラベルにを登録する必要がありますが、重要なイベントには応答しません...
  • さらに良いことに、「開始」ボタンも追加します...
于 2013-05-29T01:10:09.197 に答える
0
public void actionPerformed(ActionEvent e) {
    if("Exit".equals(e.getActionCommand())

System.exit(0); }

于 2014-09-08T09:02:18.393 に答える
0

あなたが試すことができます:

    public class LeftPanel extends JPanel implements ActionListener {


    public LeftPanel(Tetris tetris) {
        this.tetris = tetris;
        setPreferredSize(new Dimension(400, 480));
        setBackground(Color.getHSBColor(17f, 0.87f, 0.52f));
        JButton ExitGame = new JButton("Exit Game");
        ExitGame.addActionListener(this);
        ExitGame.setActionCommand("Exit");
        add(ExitGame );

    }

    public void actionPerformed(ActionEvent e) {
        if("Exit".equals(e.getActionCommand())
            System.exit(0);
    }
}
于 2013-05-29T01:14:28.857 に答える
0

この行は構文エラーのようです。

add(new JButton("Exit Game"));
    {
        ExitGame.addActionListener(this);
    }

私はそれが次のようなものであるべきだと思います:

ExitGame= new JButton("Exit");
this.add(ExitGame);
ExitGame.addActionListener(this);

私はこれをテストしていませんが、微調整すれば、やりたいことを実行できるはずです。うまくいくことを願っています!

-フランク

于 2013-05-29T01:14:37.713 に答える
-1

ActionlListener はマウスとキーボードの両方でトリガーできますが、ユーザーはマウス イベントのみに応答する必要があるため、アクション リスナーを mouselistener に変更します。テストされ、合格しました。

public class LeftPanel extends JPanel implements ActionListener {
    JButton ExitGame;

    public LeftPanel(Tetris tetris) {
        this.tetris = tetris;
        setPreferredSize(new Dimension(400, 480));
        setBackground(Color.getHSBColor(17f, 0.87f, 0.52f));
        ExitGame= new JButton("Exit Game")
        add(ExitGame);
        ExitGame.addMouseListener(new MouseAdapter() {
           public void mouseClicked(MouseEvent e) {
               System.exit(0);  
           } 
        });
    }

}

于 2013-05-29T01:12:32.317 に答える