0

さまざまなボタンが付いたさまざまなパネルがあります。一部のボタンは、配列リストを介して検索を開始するメソッドを呼び出す必要があります。他のボタンは、さまざまなJTextAreaボックスに情報を送信するメソッドを呼び出す必要があります。ボタンごとにイベントリスナーを追加した後、actionPerformedメソッドでクリックされたボタンに応じて特定のアクションを作成するにはどうすればよいですか?以下は、さまざまなGUIプロパティのコードです。3つの異なるJPanelがあり、それぞれのボタンが異なる機能を実行する必要があることがわかります。どのボタンがクリックされたかを判断する方法を知っておくだけで、適切なメソッド(別のクラスで既に記述されている)にリンクできます。これにはifステートメントが必要ですか?他のクラスがGUIのボタンを公開した場合、それらにアクセスできますか、それともこれを行うためのより効率的な方法がありますか。

JPanel foodOptions;
JButton[] button= new JButton[4]; //buttons to send selected object to info panel
static JComboBox[] box= new JComboBox[4];

JPanel search;
JLabel searchL ;
JTextField foodSearch;
JButton startSearch; //button to initialize search for typed food name
JTextArea searchInfo;

JPanel foodProfile;
JLabel foodLabel;
JTextArea foodInfo;
JButton addFood; //but to add food to consumed calories list

JPanel currentStatus;
JLabel foodsEaten;
JComboBox foodsToday;
JLabel calories;
JTextArea totalKCal;
JButton clearInfo; //button to clear food history
4

3 に答える 3

1

そうですね、それを行う方法はたくさんあると思います。私はあなたが次のことができると思います:

public class Myclass implements ActionListener
{
  private JButton b1,b2;
  private MyClassWithMethods m = new MyClassWithMethods(); 

  // now for example b1
  b1 = new JButton("some action");
  b1.setActionCommand("action1");
  b1.addActionListener(this);

  public void actionPerformed(ActionEvent e) {
     if ("action1".equals(e.getActionCommand())) 
    {
        m.callMethod1();
    } else {
       // handle other actions here
    }
   }
 }

また、他のボタンについても同じことを行い、どのアクションがイベントをトリガーしたかをテストしてから、クラスから適切なメソッドを呼び出すことができます。

于 2013-01-22T23:14:19.613 に答える
1

人々のコメントによると、あなたはある種のリスナーを使う必要があります、これはあなたが始めるための本当の基本的な例です、しかし私はほとんどの場合、その場ではなく他の場所であなたのリスナーを定義します:

JButton startSearch = new JButton("startSearch");
        JButton addFood = new JButton("addFood");

        startSearch.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                //DO SEARCH RELATED THINGS

            }
        });

        addFood.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                //DO FOOD ADD RELATED THINGS

            }
        });
于 2013-01-22T23:02:05.070 に答える
1

このようなもの:

JButton searchButton = new JButton("Start search");

searchButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
      // do some search here
   }
});

JButton addFoodButton= new JButton("Add food");

addFoodButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
      // add your food
   }
});

等々。複数のボタンを使用して動作を再利用する必要がある場合は、ActionListener匿名クラスを使用する代わりにインスタンスを作成し、それをボタンに複数回割り当てます。

于 2013-01-22T23:04:40.290 に答える