我需要将数据库值获取到 JLabels

I need to get database values to JLabels

提问人:NEO 提问时间:11/9/2023 最后编辑:Brian Tompsett - 汤莱恩NEO 更新时间:11/10/2023 访问量:28

问:

我有一个连接到 API(连接到数据库)的代码。

现在,我需要从数据库中获取用户值,并将其值写入 JLabels。

问题出在用户初始化上,但我似乎找不到在哪里。

public void mainFrame() {
        label = new JLabel();
        frame = new JFrame();
        panel = new JPanel();
        textField = new JTextField();
        button = new JButton("Enter");

        panel.setBorder(BorderFactory.createEmptyBorder(100, 100, 100, 100));

        label.setText("ENTER ID");
        panel.add(label);

        textField.setPreferredSize(new Dimension(100, 20));
        panel.add(textField, BorderLayout.CENTER);

        button.setSize(50, 50);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.dispose();
                popUp(new User());
                APITesting.getById(textField.getText());
            }
        });
        panel.add(button, BorderLayout.CENTER);

        frame.setTitle("Log In");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setSize(300, 300);
        frame.add(panel);
    }

    public void popUp(User user) {

        frame = new JFrame();
        panel = new JPanel();
        button = new JButton("Stop");
        label = new JLabel("Success!!!");
        idLabel = new JLabel();
        nameLabel = new JLabel();
        surnameLabel = new JLabel();
        genderLabel = new JLabel();
        salaryLabel = new JLabel();
        role_idLabel = new JLabel();
        total_payLabel = new JLabel();
        counterLabel = new JLabel();
        cashLabel = new JLabel("Earned:");

        panel.setBorder(BorderFactory.createEmptyBorder(100, 100, 100, 100));
        panel.setVisible(true);

        panel.add(label);





                idLabel.setText("ID: " + textField.getText());
                panel.add(idLabel);

                nameLabel.setText("Name: " + user.getName());
                panel.add(nameLabel);

                surnameLabel.setText("Surname: " + user.getSurname());
                panel.add(surnameLabel);

                genderLabel.setText("Gender: " + user.getGender());
                panel.add(genderLabel);

                salaryLabel.setText("Salary: " + user.getSalary());
                panel.add(salaryLabel);

                role_idLabel.setText("Role ID: " + user.getRole_id());
                panel.add(role_idLabel);

                total_payLabel.setText("Total Pay: " + user.getTotal_pay());
                panel.add(total_payLabel);

        counterLabel.setText("");
        panel.add(counterLabel);

        timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                seconds++;
                if (seconds == 60) {
                    seconds = 0;
                    minutes++;
                } else if (minutes == 60) {
                    minutes = 0;
                    hours++;
                }
                String timeText = String.format("%02d:%02d:%02d", hours, minutes, seconds);
                counterLabel.setText(timeText);

                salary = hours * 10;
                cashLabel.setText("Earned: " + salary + "$");
                panel.add(cashLabel);

            }
        });
        timer.start();

        button.setSize(50, 50);
        button.setVisible(true);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                timer.stop();
                frame.dispose();
            }
        });
        panel.add(button, BorderLayout.CENTER);

        panel.setLayout(new GridLayout(11, 5));
        insets = panel.getInsets();
        Dimension size = label.getPreferredSize();

        label.setBounds(100 + insets.left, 70, size.width, size.height);

        size = idLabel.getPreferredSize();
        idLabel.setBounds(50 + insets.left, 100, size.width, size.height);

        size = nameLabel.getPreferredSize();
        nameLabel.setBounds(50 + insets.left, 130, size.width, size.height);

        size = surnameLabel.getPreferredSize();
        surnameLabel.setBounds(50 + insets.left, 160, size.width, size.height);

        size = genderLabel.getPreferredSize();
        genderLabel.setBounds(50 + insets.left, 190, size.width, size.height);

        size = salaryLabel.getPreferredSize();
        salaryLabel.setBounds(50 + insets.left, 220, size.width, size.height);

        size = role_idLabel.getPreferredSize();
        role_idLabel.setBounds(50 + insets.left, 250, size.width, size.height);

        size = total_payLabel.getPreferredSize();
        total_payLabel.setBounds(50 + insets.left, 280, size.width, size.height);

        size = counterLabel.getPreferredSize();
        counterLabel.setBounds(50 + insets.left, 310, size.width, size.height);

        size = button.getPreferredSize();
        button.setBounds(50 + insets.left, 340, size.width, size.height);


        frame.setSize(400, 500);
        frame.setVisible(true);
        frame.repaint(0,0,0,0);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(panel);
    }

我想我几乎尝试了一切。我也知道由于某种我无法理解的原因,用户是空的。

Java MySQL 数据库 用户界面

评论


答:

0赞 Rafael Guillen 11/10/2023 #1

在这里,您将向对话框发送一个新对象:User

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.dispose();
                popUp(new User()); //New User (it's empty)
                APITesting.getById(textField.getText());
            }
        });

相反,您必须为对象提供从数据库中填充的值。User