作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个程序,简而言之,它会在按下按钮时前进。在某些执行阶段,该按钮会暂时停用,以防止它在错误的时间点触发代码。我现在已经创建了一些键绑定(bind)作为按下按钮的快捷方式,但需要在上述相同时间禁用它们,否则它们会导致我的数组在我使用它之前就被破坏和删除。
我可以使用任何提示、方法或 Java 方法来 [非常] 轻松地但通过禁用保持?
最佳答案
使用 doClick()
让绑定(bind)键按下 JButton。然后当按钮需要停用时,在按钮上调用 setEnabled(false)
。
顺便说一句,我想你的按钮和键绑定(bind)可以共享相同的 Action ,但我不知道在 Action 上调用 setEnabled(false)
是否会阻止键运行 Action 的 Action 执行方法。测试时间...马上回来...
编辑:是的,您可以让 JButton 和绑定(bind)键共享启用/禁用的相同操作:
import java.awt.event.*;
import javax.swing.*;
public class TestBoundAbstractActions {
public static void main(String[] args) {
final MyAction myAction = new MyAction();
final JButton actionButton = new JButton(myAction);
JRadioButton enableRadioButton = new JRadioButton("Enabled", true);
enableRadioButton.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
myAction.setEnabled(e.getStateChange() == ItemEvent.SELECTED);
}
});
JPanel panel = new JPanel();
int condition = JComponent.WHEN_IN_FOCUSED_WINDOW;
String mKey = "m key";
panel.getInputMap(condition).put(KeyStroke.getKeyStroke(KeyEvent.VK_M, 0), mKey);
panel.getActionMap().put(mKey, myAction);
panel.add(new JLabel("Press \"m\" to activate key-bound action"));
panel.add(actionButton);
panel.add(enableRadioButton);
JOptionPane.showMessageDialog(null, panel);
}
}
class MyAction extends AbstractAction {
public MyAction() {
super("My Action");
putValue(MNEMONIC_KEY, KeyEvent.VK_M);
}
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("boo!");
}
}
关于java - 使用相应的按钮 Java 完全临时禁用一个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949783/
我在 Java 中遇到异常处理问题,这是我的代码。当我尝试运行此行时出现编译器错误:throw new MojException("Bledne dane");。错误是: exception MojE
我刚刚开始学习asp.net。在你们的支持下,我希望我能从这个论坛学到更多东西。 我的问题是, 我在 asp.net 页面中有一个 TabContainer1,因为每个选项卡面板中有多个类似 (60)
我是一名优秀的程序员,十分优秀!