0

我有一个带有各种按钮的各种面板。一些按钮应该调用通过数组列表启动搜索的方法,其他按钮应该调用将信息发送到不同 JTextArea 框的方法。为每个按钮添加事件侦听器后,如何根据在我的 actionPerformed 方法中单击的按钮创建特定操作?下面是我的各种 gui 属性的代码,你可以看到有 3 个不同的 JPanel,每个 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

根据人们的评论,您需要使用某种类型的侦听器,这是一个真正的基本示例来帮助您入门,但是在大多数情况下,我会在其他地方定义您的侦听器,而不是即时定义:

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

好吧,我猜有很多方法可以做到这一点。我想您可以执行以下操作:

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 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 回答