我有一个关于通过单击 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/