【问题标题】:Java GUI - Date of birthJava GUI - 出生日期
【发布时间】:2022-01-07 13:40:44
【问题描述】:

用户输入员工的出生日期,但任务说您必须验证输入。

当用户输入生日日期为 33 或 B.O.D. 中没有这样的日子时,我希望应用程序显示一个错误

此外,当用户单击保存时,文本字段中的数据应保存到数组列表中。 并且当用户点击打印时,arraylist中保存的数据应该显示为以前的信息。

public class JavaGUI {

    ArrayList<JavaMethods> arl10 = new ArrayList<JavaMethods>();
    ArrayList<JavaMethods> arl11 = new ArrayList<JavaMethods>();

    JFrame frame;
    JPanel panel;

    JLabel labelA = new JLabel("Employee Information");
    JLabel labelB = new JLabel("Employee Birthdate");

    JLabel label1 = new JLabel("Employee Name:");
    JTextArea txt1 = new JTextArea("                ");
    JLabel label2 = new JLabel("Employee Address:");
    JTextArea txt2 = new JTextArea("                ");
    JLabel label3 = new JLabel("Employee Age:");
    JTextArea txt3 = new JTextArea("                ");
    JLabel label4 = new JLabel("Day:");
    JTextArea txt4 = new JTextArea("                ");
    JLabel label5 = new JLabel("Month:");
    JTextArea txt5 = new JTextArea("                ");
    JLabel label6 = new JLabel("Year:");
    JTextArea txt6 = new JTextArea("                ");

    JButton btn1 = new JButton("Clear");
    JButton btn2 = new JButton("Save");
    JButton btn3 = new JButton("Print");

    JRadioButton male = new JRadioButton("Male");
    JRadioButton female = new JRadioButton("Female");

    ButtonGroup g1 = new ButtonGroup();

    ActionListener act1 = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            txt1.setText("                ");
            txt2.setText("                ");
            txt3.setText("                ");
            txt4.setText("                ");
            txt5.setText("                ");
            txt6.setText("                ");

        }

    };

    ActionListener act2 = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                int day = Integer.parseInt(txt4.getText());
                if(day <= 32) {
            
            JOptionPane.showMessageDialog(frame, "Employee Information has been saved, Click PRINT to show them!");
            JavaMethods arl10 = new JavaMethods(txt1.getText().trim(), txt2.getText().trim(), male.getText(),Integer.parseInt(txt3.getText().trim()), Integer.parseInt(txt4.getText().trim()),Integer.parseInt(txt5.getText().trim()), Integer.parseInt(txt6.getText().trim()));
                
            arl11.add(arl10);
                }
                else {
                    System.out.println("wrong day");
                }
            }
            catch(NumberFormatException ex)
            {
                System.out.println("Exception : "+ex);
            }
        }
    };

    ActionListener act3 = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            try {
    System.out.println(arl11);

                    JavaMethods arl10 = new JavaMethods(txt1.getText().trim(), txt2.getText().trim(), female.getText(),
                            Integer.parseInt(txt3.getText().trim()), Integer.parseInt(txt4.getText().trim()),
                            Integer.parseInt(txt5.getText().trim()), Integer.parseInt(txt6.getText().trim()));

                    arl11.add(arl10);

                    System.out.print("Previously Stored Information" + " " + arl11);
                    System.out.println();
                    System.out.println(arl10.toString());

                }

             catch (Exception e1) {
                System.out.println(
                        "Unable to perform the task, Please make sure you have entered the right DataType, Or make sure you have filled all the blanks.");

            }
        }

    };

    public JavaGUI() {
        frame = new JFrame();
        panel = new JPanel();

        frame.setPreferredSize(new Dimension(500, 500));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setTitle("HR System");

        btn1.addActionListener(act1);
        btn2.addActionListener(act2);
        btn3.addActionListener(act3);

        panel.add(labelA);
        panel.add(label1);
        panel.add(txt1);
        panel.add(label2);
        panel.add(txt2);
        panel.add(label3);
        panel.add(txt3);
        panel.add(labelB);
        panel.add(label4);
        panel.add(txt4);
        panel.add(label5);
        panel.add(txt5);
        panel.add(label6);
        panel.add(txt6);

        g1.add(male);
        g1.add(female);

        panel.add(btn1);
        panel.add(btn2);
        panel.add(btn3);
        panel.add(male);
        panel.add(female);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);

    }

}

【问题讨论】:

  • 您在验证过程中遇到的具体问题是什么?你能指定吗?谢谢。
  • @vivek 我想通过在控制台中显示错误来阻止用户输入错误的出生日期所以不允许用户输入日期为 32,没有这样的出生日期
  • 那么你应该将表达式更改为
  • 这是一个字符串,我无法将其与整数值进行比较
  • 但是我看到你正在做一个 parseInt 所以你将拥有 int 值。

标签: java swing


【解决方案1】:

比较数字

要比较输入为文本的数字,请解析。

String dayInput = "42" ;
int day = Integer.parseInt( dayInput ) ;
if( day < 1 ) { … handle invalid input }
if( day > 31 ) { … handle invalid input }

还有月份。

String monthInput = "13" ;
int month = Integer.parseInt( monthInput ) ;
if( month < 1 ) { … handle invalid input }
if( month > 12 ) { … handle invalid input }

验证日期

要验证日期,请实例化 LocalDate 对象,同时捕获 DateTimeParseException

try
{
    LocalDate ld = LocalDate.of( year , month , day ) ;
}
catch ( DateTimeParseException e )
{ 
    … handle invalid input
}

最终,您可能想了解 Jakarta Bean Validation 以帮助完成此类工作。

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2011-02-08
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多