0

Button2 以降のアクション イベントを Button1 の後に停止するにはどうすればよいですか。Button1 は Button1 アクション イベントのみを実行し、その後停止する必要があります。

助けてください、ありがとう

public void actionPerformed(ActionEvent ae) {
    if (ae.getSource().equals(button1)){
        System.out.println("Button 1");

    }

    if (ae.getSource() == button2){
        System.out.println("Button 2!");
    }

編集:

すみません、間違ったコード

主に:

Button1.addActionListener(this);
        jPanel1.add(Button1);
        Button2.addActionListener(this);
        jPanel1.add(Button2);

メインではない:

 public void actionPerformed(ActionEvent ae) {
        Object Button1 = null;
        if (!ae.getSource().equals(Button1)){
            System.out.println("Oben");
        }
        Object Button2 = null;
        if (ae.getSource() == (Button2)){
            System.out.println("Links");
        }


             }

Button1 を押すと、「Oben」が表示されます

Button2 を押すと、「Oben」も表示されます

「リンク」が表示されない理由

4

3 に答える 3

1

(編集した) コードをもう一度見てください。

Object Button1 = null;
if (!ae.getSource().equals(Button1)){
    System.out.println("Oben");
}

つまり、ここで言っているのは次のことです。どちらの場合も true と評価されます。

if (ae.getSource() != null)

これが、結果が常にObenである理由です。

別の と比較する場合はButton1、正しいオブジェクトを参照してください。コードの残りの部分を見ないとわかりませんが、( this.Button1);を使用するつもりかもしれません。

于 2013-05-29T15:41:28.777 に答える
1
public void actionPerformed(ActionEvent ae) {
    Object Button1 = null;
    if (!ae.getSource().equals(Button1)){
        System.out.println("Oben");
    }
    Object Button2 = null;
    if (ae.getSource() == (Button2)){
        System.out.println("Links");
    }


         }

残念ながら、上記のコードはあまり意味がなく、通常の慣行に準拠していません。まず、特別な場合を除いて、異なるアクションを実行するボタンには異なるリスナーが必要です。これは特別なケースではありません。コードを次のように分割します。

public void actionPerformed(ActionEvent e)
{
     System.out.println("Oben");
     // This is the actionPerformed method for button 1.
}

public void actionPerformed(ActionEvent e)
{
     System.out.println("Links");
     // This is for button 2.
}

次に、関連するボタンにバインドするだけです。

于 2013-05-29T15:53:59.890 に答える
1

コードには 2 つの問題があります。

  1. あなたは設定Button1Button2ていますnull
  2. if ステートメントは、1 回の呼び出しで複数の if ステートメントを実行できるようにレイアウトされています。actionPerformed

これを試して:

public void actionPerformed(ActionEvent ae) {
    if(ae.getSource().equals(this.Button1)) {
        System.out.println("Button 1");
    } else if (ae.getSource().equals(this.Button2)) {
        System.out.println("Button 2");
    }
}

Button1このコードは、とがメソッドが属するButton2クラスのメンバーであることを前提としています。actionPerformed

于 2013-05-29T15:50:48.360 に答える