-1

Javaでゲームを作成していますが、ボタンが付いたメインメニューがあります。別のクラスで使用できるように、押されたボタンを返す必要があります。私はこれを行う方法がわかりません。誰かが何か考えを持っていますか?

actionPerformedメソッドでe.getSource()を使用してボタンを取得します。ボタンを戻してみましたが、うまくいきませんでした。

どうもありがとうございます。

ここにいくつかのコードがあります:

メニュークラス

public void actionPerformed(ActionEvent e) {
    Object button = e.getSource();
    return button
}

その他のクラス

public static void createGameScreen() {
    if(Menu.button == Menu.button1) {
         // do something here
    }
}
4

2 に答える 2

1

どのボタンが押されたかを返すのではなく、そのアクションにコードを割り当てます(または、少なくともそれが私があなたの質問を解釈している方法です)。そのボタンには、このようなリスナーを割り当てます。これが私が好む方法です。もっと良い方法があるかもしれません。

button.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {
        buttonBoardActionPerformed(e);
    }
});


public void buttonActionPerformed(ActionEvent e) {
    // Do some stuff
}

基本的に、1 つの個別のリスナーを全体に割り当てるのではなく、ボタンをアクションに直接リンクしています。IMOのデバッグが容易。THIS TUTORIALも読んでください。

于 2013-02-27T15:24:25.527 に答える
0

あなたが入力したものについては、次のようなものを書いたと思います:

buttonProcess = new JButton("Process");
buttonProcess.set//bounds,actionlistener,etc.
if (e.getSource().equals(buttonProcess)){
 //do some stuff
 return buttonProcess;
}

Auxiliary クラスまたは UI のクラスで定義された静的変数を使用してみることができます。

例えば:

public class AuxClass{
 public static Object PROCESS_BUTTON; //YOu can replace Object by Component or JButton
}

//then in your first UI code
 if (e.getSource().equals(buttonProcess)){
     AuxClass.PROCESS_BUTTON = buttonProcess;
    }

//then in your other UI:
if (AuxClass.PROCESS_BUTTON !null && AuxClass.PROCESS_BUTTON instanceof JButton){
 //Do what you want here
}
于 2013-02-27T15:28:26.243 に答える