在我的Swing应用程序中,用户必须先插入数字和值,然后才能切换到下一个窗口。现在,作为干净程序,我将检查每个输入是否有效,如果无效,则会显示错误消息,并且下一个窗口不会打开。
此检查的结构如下(示例):
Button buttonToOpenNextWindow = new JButton("next");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(checkValidty){
// (...)
new WindowA();
frame.dispose(); // (*)
}
}
});
(*)注意: 我知道多个JFrames的原理很丑陋,我将要更改它,但是对于这个问题,它是无关紧要的。
现在,这个问题的重点是this checkValidity()
,我将其结构如下:
private boolean checkValidity(){
// check input 1
try{
Integer.parseInt(textField1.getText());
}catch (NumberFormatException e){
new ErrorDialog("input 1 is invalid!"); // own implemented dialog
return false;
}
// check input 2
try{
Integer.parseInt(textField2.getText());
}catch (NumberFormatException e){
new ErrorDialog("input 2 is invalid!"); // own implemented dialog
return false;
}
// (...)
// check input n
try{
Integer.parseInt(textField_n.getText());
}catch (NumberFormatException e){
new ErrorDialog("input n is invalid!"); // own implemented dialog
return false;
}
return true;
}
这完全符合我的要求,但是代码本身非常丑陋,因为具有多个输入选项,该方法的长度为200、300或更多行(因为我不仅检查例如它是否是数字,而且还检查数字是否有意义)在程序逻辑等方面)。是否有Swing自己的方法来检查这种情况?还是有更好的主意,如何使用拆分方法完全实现此功能?
一种解决方案是使用Swing
InputVerifier
验证每个JTextField
使用的输入。由于每个字段的验证功能都相同,因此可以将单个实例用于所有组件:
public class MyNumericVerifier extends InputVerifier {
@Override
public boolean verify(JComponent input) {
String text = ((JTextField) input).getText();
try {
Integer.parseInt(text);
} catch (NumberFormatException e) {
return false;
}
return true;
}
}
InputVerifier verifier = new MyNumericVerifier()
textField1.setInputVerifier(verifier);
问题内容: 这里的Python新手非常抱歉,我确定这是一个愚蠢的问题,但是我似乎无法在要求我使用while循环检查有效用户输入的教程中解决以下挑战。 (使用Python2.7) 这是我的代码,但无法正常工作: 上面打印输出到控制台: 这显然是不正确的-循环应该在用户输入“ y”或“ n”时结束,但是我不确定如何执行此操作。我在这里做错了什么? 注意:挑战要求我同时使用运算符和 问题答案: 较短的解
问题内容: 如何检查shell脚本中IP地址的有效性,该范围在to 的范围内? 问题答案: 如果您使用的是bash,则可以对模式进行简单的正则表达式匹配,而无需验证四边形: 如果您坚持使用POSIX Shell,则可以使用BRE而不是ERE来做基本相同的事情: 请注意,假设您的正则表达式锚定在字符串的左侧,因此不需要缩写。 如果确认每个四边形小于256很重要,那么显然您将需要更多代码: 甚至更少的
问题内容: 我很好奇,用Java 创建对象的最明显的方法已被弃用,并且似乎已被使用宽大日历的不太明显的方法“替代”。 如何检查以日,月和年的组合形式给出的日期是否为有效日期? 例如,2008-02-31(如yyyy-mm-dd)将是无效日期。 问题答案: 当前的方法是使用日历类。它具有setLenient方法,该方法将验证日期和引发异常,如果超出示例,则抛出异常。 忘记添加:如果您获得日历实例并使
这里的Python新手非常抱歉,我确信这是一个愚蠢的问题,但在一个教程中,我似乎无法解决以下挑战,该教程要求我使用while循环来检查有效的用户输入。 (使用Python2.7) 这是我的代码,但它工作不正常: 上述内容打印到控制台: 这显然是不对的- 注意:挑战要求我同时使用运算符和
我目前正在尝试为一个我为好玩而开发的网站创建一个登录/创建帐户页面。在创建帐户表单中,我有一个用户名、姓名、电子邮件、密码和验证密码的输入字段。我在输入字段中也有模式,以便用户生成有效的帐户信息。以下为表格: 澄清:用户名模式要求您的用户名只有大写和小写字母和数字,并且必须至少包含5个字符,最多包含40个字符。电子邮件要求您输入有效的电子邮件地址模式。密码要求至少包含8个字符,并且必须包含大小写字
你可以在截图中看到,有一个JPanel分为两个区域,左区和右区。左侧区域有许多文本链接。当我单击SLA Criteria链接时,它将弹出SLA Criteria窗口。弹出窗口是JFrame对象。 现在,我试图将弹出窗口放在JPanel的右侧区域,这意味着不再有弹出窗口,即当我单击SLA标准链接时,其内容将显示在JPanel的右侧区域。JPanel正确区域的现有内容将不再使用。这个概念与java a