Java 操作监听器和 JButton

标签 java swing jbutton actionlistener actionevent

我有一个 gui 类,它具有链接到一个 ActionListener 的三个不同的 JButton

ActionListener 类中,我希望这三个 JButton 之间进行交互,从而允许程序“记住”之前单击了哪个按钮。

例如:

  1. 如果点击了button1 --> 记住这一点,
  2. 然后,当接下来单击“button2”时:执行与单击“button1”相关的操作。

换句话说,如果button1点击,现在在if子句中检查button2点击。

现在 getActionCommand() 不允许我使用嵌套的 if 语句,因为它只检查当前单击的按钮并且没有“内存”。

public void actionPerformed(ActionEvent e){
  if (Integer.parseInt(e.getActionCommand()) == 0){
    System.out.println("This is Jug 0");
    // wont be able to print the following
    if (Integer.parseInt(e.getActionCommand()) == 1){
      System.out.println("This is Jug 1 AFTER jug 0"); //I will never be able to print this
    }
  }
}

最佳答案

据我了解您正在寻找待办事项......

因此,实现此目的的一种方法是创建一个 boolean 值实例变量,因此如果之前单击了按钮,则该变量将被设置为 true,然后您可以在方法内部检查该标志是否已设置为 true。 这种方法的缺点是,一旦单击一次,该标志将始终为真。您必须实现一种方法来重置此标志。

private boolean hasButtonOneBeenPressed = false; //set this to true when the button has been clicked

public void actionPerformed(ActionEvent e){
  if (Integer.parseInt(e.getActionCommand()) == 0 && !hasButtonOneBeenPressed){
    System.out.println("This is Jug 0");
    // wont be able to print the following
  } else if(Integer.parseInt(e.getActionCommand()) == 1 && hasButtonOneBeenPressed){
      System.out.println("This is Jug 1 AFTER jug 0");
    } else {
      //do something else
   }
}

关于Java 操作监听器和 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39984960/

相关文章:

java - 如何防止 JButton 改变大小?

java - 零除 Java 整数与 double

java - 将 Spring Security 与 OpenID 一起使用时出现 AccessControlException

java - 如何提高JPictureBox大图像的绘制速度?

eclipse - 如何将自定义组件添加到 Eclipse swing 调色板?

java - Swing应用问题

java - JButton 未出现在 GUI 上

java - 在java中运行关闭 Hook 的问题

java - 为什么 ConcurrentHashMap 会阻止 null 键和值?

java - 将 JButton 的多个实例添加到网格中的 JFrame