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

Java GUI-出生日期[已关闭]

逑兴安
2023-03-14

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

我希望应用程序显示的是一个错误,当用户输入生日的日期为33或什么,因为在B. O. D.中没有这样的一天。

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

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);

    }

}

共有1个答案

孟宏才
2023-03-14

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

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
}

最终,您可能希望了解JakartaBean验证,以帮助完成此类工作。

 类似资料:
  • 用户输入员工的出生日期,但任务要求您验证条目。 我希望应用程序显示的是一个错误,当用户输入生日的日期为33或什么,因为在B. O. D.中没有这样的一天。 此外,当用户单击“保存”时,文本字段中的数据应保存到arraylist中。当用户单击“打印”时,保存在arraylist中的数据应显示为以前的信息。

  • 问题内容: 如何计算人的年龄(基于dob列),并使用新值将一列添加到数据框中? 数据框如下所示: 我尝试执行以下操作: 但是,收到以下错误: TypeError:-:“ datetime.datetime”和“ str”的不受支持的操作数类型 问题答案: 产量 看来您的栏目前是字串。首先,将它们转换为using 。 该格式将最后两位数字转换为年份,但不幸的是假设的平均值为2052。由于这可能不是希

  • 我试图在MySQL中找到下一个基于DOB的日期实例-例如,如果DOB是1975-12-20,我们今天运行它,那么下一个生日是2020-12-20。 同样,如果DOB为1975-12-19,则下一个生日为2020-12-19,但如果DOB为1975-12-21,则下一个生日为2019-12-21。 我可以在PHP中通过分解日期和替换年份来实现这一点,但我想尝试在MySQL中实现,因为它会更快地运行,

  • 您的生日日期   设定您的生日日期。

  • 问题内容: 我在sql中有一个用户表,他们每个都有生日。我想将他们的出生日期转换为他们的年龄(仅年),例如日期:年龄:14,并将更改为年龄: 在这里,我想显示用户的日期: 问题答案: 功能:, MySQL > = 5.0.0 功能:,

  • 在Postgres数据库中给定此架构: 我如何查询表以获得每个人今天之后的下一个生日的日期? 例如,如果Bob的出生日期是2000-06-01,那么他的下一个生日将是2016-06-01。 注意:我不是在寻找一个预定义的,而是一个人出生的下一个周年纪念日。 我已经用Python写了等效的: 然而,我想看看博士后是否能以更有效的方式做到这一点。