java - 如何在 Java Swing 中对单击执行多个操作

标签 java swing jbutton action

我有一个关于通过单击 button 执行其他 button 操作的问题。三个按钮的一些示例代码:

JButton a = new JButton("a");
a.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    // Action of a is Here                   
  }
});

JButton b = new JButton("b");
b.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    // Action of b is Here                   
  }
});

那些应该放在一起,比如:

JButton c = new JButton("c");
c.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    // Action of c is Here
    // Action of a 
    // Action of b              
   }
});

在上面的例子中,我有三个按钮a,b,c,每个按钮都有自己的 Action ;但如您所见,C 还必须运行 A 和 B 的操作。解决这个问题的好方法是什么?

最佳答案

其他答案都是正确的,但这里缺少一个重要的方面:小心AWT event dispatcher thread 上的东“太多东西”。 .

含义:单击按钮时,将创建一个事件,并且 UI 框架使用该特殊线程来触发已注册的监听器。如果其中一个监听器现在决定进行密集计算……UI 事件线程会一直忙于“那个”。在做“那件事”的同时;此线程不可用于调度任何其他 UI 事件。

因此,这“不仅”涉及创建 methodA()、methodB()、methodC() 并在您的第三个 Action 监听器中调用它们。它还是关于理解如果组合多个调用受制于“我最好在单独线程中运行这些东西;不要阻塞事件调度程序线程”。

从这个意义上说:其他答案会告诉您从这里去哪里;但要真正注意“联合操作”按钮即将创建的“Activity 量”!

关于java - 如何在 Java Swing 中对单击执行多个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931268/

相关文章:

java - 通过 EventHandler 创建的 ActionListener 不起作用

java - 使用线程移动图形 2d 对象

java - JButton 数组 Action 监听器仅适用于最后一个按钮

java - 使用模式从字符串中删除数字和字符

java - .equal 不适用于列表列表,即使它们相等

java - 制作幻灯片,自动更换图像

java - 按下时停止 JButton 突出显示

java - 将ArrayList的ArrayList放入一个bundle中,可parcelable

java - 如何禁用推送通知的声音?

java - 临时更改 JButton 背景颜色?