Java GUI Jframe异常处理



我有一个GUI设计,其中有许多用户输入的字段。我使用try-catch来处理用户错误输入的异常。当用户在数字字段(我的id字段)中输入字符串时,我是成功的,但我在这里尝试使用异常来处理用户在文本/字符串字段中输入整数时感到沮丧。下面是我的代码,让您了解我为成功执行的异常所做的工作。谢谢你。

try {
    String taskID = txtId.getText();
    int id = Integer.parseInt(taskID);
    String taskName = txtName.getText();
    String taskDesc = txtDesc.getText();
    boolean isCompleted = chkComp.isSelected();
    int taskPriority = comboPriority.getSelectedIndex();
    Task newTask = new Task(id, taskName, taskDesc, isCompleted, taskPriority);
    tasks.add(newTask);
    taskMod.addElement(newTask);
} catch (NumberFormatException e) {
    JOptionPane.showMessageDialog(null, "Error: You must enter an integer");
}

我为您提供了另一个选择,您可以使用DocumentFilter实时验证输入。这样,您就可以验证每个字符输入。如果字符与您想要的不匹配,则不允许输入。

此处仅用于数字

private JTextField createNumberField() {
    JTextField field = new JTextField(20);
    ((AbstractDocument) field.getDocument()).setDocumentFilter(new DocumentFilter() {
        @Override
        public void insertString(FilterBypass fb, int off, String str, AttributeSet attr)
                throws BadLocationException {
            fb.insertString(off, str.replaceAll("\D", ""), attr);  // remove non-digits
        }
        @Override
        public void replace(FilterBypass fb, int off, int len, String str, AttributeSet attr)
                throws BadLocationException {
            fb.replace(off, len, str.replaceAll("\D", ""), attr);  // remove non-digits
        }
    });
    return field; 
}

这里是name(允许使用字母,-和空格)

private JTextField createNameField() {
    JTextField field = new JTextField(20);
    ((AbstractDocument) field.getDocument()).setDocumentFilter(new DocumentFilter() {
        @Override
        public void insertString(DocumentFilter.FilterBypass fb, int off, String str, AttributeSet attr)
                throws BadLocationException {
            fb.insertString(off, str.replaceAll("[^a-zA-Z\s\-]", ""), attr);  // remove non-digits
        }
        @Override
        public void replace(DocumentFilter.FilterBypass fb, int off, int len, String str, AttributeSet attr)
                throws BadLocationException {
            fb.replace(off, len, str.replaceAll("[^a-zA-Z\s\-]", ""), attr);  // remove non-digits
        }
    });
    return field;
}

相关内容

  • 没有找到相关文章

最新更新