我在java中创建了一个GUI,其中包含多个JButton。我想包含一些异常处理,这样如果一个特定的按钮被点击两次或者直接点击一下,就会弹出一条消息,说这个命令是不允许的。你会建议我使用哪种类型的异常?GUI中的异常处理
问候。
我在java中创建了一个GUI,其中包含多个JButton。我想包含一些异常处理,这样如果一个特定的按钮被点击两次或者直接点击一下,就会弹出一条消息,说这个命令是不允许的。你会建议我使用哪种类型的异常?GUI中的异常处理
问候。
从像actionPerformed
的方法抛出异常是由langage语义禁止的。即使它已被授权,您认为主事件处理线程可以对这种异常做些什么?
您需要重新考虑界面的工作方式。例如,如果某个操作被禁止,那么您的界面必须显示它,例如禁用对象。不让用户点击按钮而不是让用户点击并向他发送一些反馈,表明他的行为不好。
在更复杂的scenarii你只需要让显得有些模态对话框,通知他问什么是不可能的时刻用户。这可能是一些异常事件处理程序过程中引发的结果,但你抓住它不把它:
... actionPerformed(...) {
if (someConditionOccured) {
JOptionPane.showMessageDialog(...);
} else {
// do what you want on normal condition
}
现在,可能是这样的:
... actionPerformed(...) {
try {
// something
} catch (...) {
JOptionPane.showMessageDialog(...);
}
你可以使用任何其他合适的对话。
我假设你为每个按钮附加一个侦听器,以在点击按钮时执行一个动作。
在这种监听,执行属于该按钮的动作之前,做一些验证:
public void actionPerformed (ActionEvent e) {
if (e.getSource() == myNotAllowedToClickButton) {
return;
}
// code that does stuff
}
更妙的是,确保用户不能点击按钮,通过禁用它(myButton.setEnabled(false);
)。
禁止从'actionPerformed'抛出异常。你不能抛出任何异常,因为方法的签名没有指定这样的。即使它已被授权,您认为主要事件处理线程将如何处理它? –
非常真实,对不起。答案固定。 – Hidde
你根本无法在这里使用try/catch,因为单击按钮两次并不是一个例外情况。仅仅通过行动就不会产生异常。您在用户点击后在代码中执行的任何操作都可能导致异常,但是这是对您的影响。
你想在这里做的是确定用户是否点击超过一次的动作事件中使用getClickCount()更多。或者,您可以在操作侦听器的开始处禁用按钮 - 执行所需的任何操作 - 然后在操作结束时再次启用该按钮。
如果你需要什么比这一点,你需要重新设计你的,你将有可能最终运行到并发问题的应用程序更加复杂。
栈的大小应该等于点击模式最大尺寸,您将使用。
Java只有一个“类型”的异常处理。你要么丢,要么抓,要么你忽略。你能稍微扩展一下吗? – Rainbolt
更好地禁用该按钮,以便使用无法再次单击它。 – SaurabhJinturkar
只需使用'getClickCount()'。如果它大于2,请禁用点击。我不明白你为什么需要一个*例外*在这里。 – Maroun