当前位置: 首页 > 知识库问答 >
问题:

Java GUI使用一个Jtextfield同时输入文本和数字

岳均
2023-03-14

我有一个带有一些方法的DAO类,例如从数据库中按ID和按名称获取雇员。这些方法工作正常。

这是我的代码

public class EmployeeApp extends JFrame {
private JPanel panelMain;
private JButton searchButton;
private JScrollPane scrollPane;
private JTextField idTextField;
private JLabel lastNameLabel;

private EmployeesDao employeesDao;


public EmployeeApp() {

    // create the DAO
    try {
        employeesDao = new EmployeesDao();
    } catch (Exception exc) {
        JOptionPane.showMessageDialog(this, "Error: " + exc, "Error", JOptionPane.ERROR_MESSAGE);
    }

    searchButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            try {
                String searchValue = idTextField.getText();

                List<Employee> employees;

                if (searchValue != null && searchValue.trim().length() > 0) {
                    employees = employeesDao.searchEmployees(searchValue);
                } else {
                    employees = employeesDao.getAllEmployees();
                }
                for (Employee temp : employees) {
                    System.out.println(temp);
                }

            } catch (Exception exc) {
                JOptionPane.showMessageDialog(EmployeeApp.this, "Error: " + exc, "Error", JOptionPane.ERROR_MESSAGE);

            }

        }
    });
}

public static void main(String[] args) {
    JFrame frame = new JFrame("EmployeeApp");
    frame.setContentPane(new EmployeeApp().panelMain);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}}

编辑:我试图修改try/catch块,现在当我在JTextField中输入一个数字时,getEmployeeById方法可以正常工作。但是,当输入字符串时,我会得到一个NumberFormatException。

        searchButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String searchValue = idTextField.getText();
            List<Employee> employees;
            Employee employee;

            try {
                int numValue = Integer.parseInt(searchValue);
                employee = employeesDao.getEmployeeById(numValue);
                System.out.println(employee);

                if (searchValue != null && searchValue.trim().length() > 0) {
                    employees = employeesDao.searchEmployees(searchValue);
                }

                else {
                    employees = employeesDao.getAllEmployees();
                }
                for (Employee temp : employees) {
                    System.out.println(temp);
                }

            } catch (Exception exc) {
                JOptionPane.showMessageDialog(EmployeeApp.this, "Error: " + exc, "Error", JOptionPane.ERROR_MESSAGE);

            }

        }
    });

共有1个答案

张锐藻
2023-03-14

我们建议您从catch块中获取错误消息,并在那里执行更有用的操作。如果输入了catch块,则您知道idTextField没有保存有效的数值数据,您应该使用文本提取您的数据,使用名称或文本数据,而不是数值数据。类似于:

    @Override
    public void actionPerformed(ActionEvent e) {
        String idText = idTextField.getText().trim();
        try {
            int value = Integer.parseInt(idText);

            // if we have reached this line, then idText is numeric

            // code here to get Employee by value number

        } catch (NumberFormatException e1) {

            // don't show an error message here!
            // If we get here we know that idText is **not** numeric

            // code here to to get Employee by name using idText
        }
    }

但我自己不喜欢这种胡闹,相反,我会努力使我的代码更好地防止白痴。您可以使用JRadioButtons允许用户使用文本或数值进行数据提取,然后对JTextField进行调整,使其在用户选择数值选项时不接受文本。例如,可以通过在JTextField的文档上设置和移除DocumentFilter来实现。

 类似资料:
  • 问题内容: 假设我有两个文本区域… 文字区1 文字区2 我希望能够从在文本区域2中键入的文本之后的文本中添加文本。例如:如果我写“我的名字叫乔”。在textarea中,它会同时复制并写“我的名字叫乔”。在现有的“ Hi There”之后的两个文本区域中。文本。 结果将是… 我可以使用jQuery还是需要使用AJAX这样做?我将如何去做? 问题答案: 绑定到事件时,您会注意到延迟。通常绑定到事件时,

  • 我有一个双数组,其中我需要使用jtextfield输入搜索第一行,以获得索引(I的位置),然后使用该索引号来标识第二行的位置,并使用第二个数组行中的变量。我用它来得到数组第二行的毛利率乘数,它基于第一行数组中的百分比利润的位置。 感谢您的帮助。我已经搜索了其他数组链接,但它们处理的是位置而不是位置的内容。 public void getMarginArray(){

  • 问题内容: 我有一个类,要求输入用户名和密码来使应用程序中的用户生效。 在其中,我有2个 JTextField 对象,一个用于用户名输入,另一个用于密码输入。 它工作正常,但是我的问题是,当用户在pswdTextField中写入密码时,密码显示在其中。我想通过为组成插入密码的每个字母显示一个点,星号或类似字符来隐藏它。 怎么做? 问题答案: 而不是使用JTextField,请为您的pswdText

  • 本文向大家介绍实现两个文本框同时输入的实例,包括了实现两个文本框同时输入的实例的使用技巧和注意事项,需要的朋友参考一下 实例如下所示: 以上这篇实现两个文本框同时输入的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 为了对图像进行分类,我们使用了一个带有几个卷积层和几个全连接层的神经网络。 元数据有一些数字信息可以帮助对图像进行分类。有没有一种简单的方法可以将数值元数据连同卷积的输出一起输入到第一个全连接层中?有没有可能使用TensorFlow甚至更好的Keras来实现这一点?

  • 我有一个jTextfield,必须从JList获取输入。在FocusGaut属性上,jList应该正好出现在jTextfield下面,而在FocusLost属性上,jList应该消失。我已经做了一些编码,但我得到一个问题在它。在FocusGaut属性中,会出现jList,但单击它后,它会转到其他jTextfield的背面,该背面位于前一个TextField的下方。以下是我的代码: