【问题标题】:How to pass selected item data from JComboBox to another JFrame class?如何将选定项目数据从 JComboBox 传递到另一个 JFrame 类?
【发布时间】:2021-06-29 17:55:44
【问题描述】:

我正在做一个大学项目,它涉及从列表中选择一个用户并“登录”。我目前从数据库中获取数据并使用while循环将数据添加到JComboBox:

while(rs.next())
{
    userID = rs.getInt("user_ID");
    fname = rs.getString("fname");
    lname = rs.getString("lname");
    userSelect.addItem(userID + " " + fname + " " + lname);

}

然后我想将所选项目的用户 ID 传递给新的 JFrame,并且只传递用户 ID。从那里我可以得到用户的其余信息。处理它的最佳方法是什么?要拼接字符串?

我有一个运行以下操作的提交按钮

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() == select) {
        Object item = userSelect.getSelectedItem();
        System.out.println(item);
        UserDash getDash = new UserDash(item);
        this.dispose();
    }
}

【问题讨论】:

  • 您想将数据的呈现与数据/模型分开。 JComboBox 在这方面非常灵活。首先查看How to Use Combo BoxesProviding a Custom Renderer,尤其是(这是Swing 中非常常见的概念,您应该了解它)。
  • 这意味着您可以依赖用户(即对象)的“模型”表示,而不是依赖 String 解析,这几乎总是您能做的最糟糕的事情

标签: java swing jcombobox


【解决方案1】:

只是对我昨天的问题的更新。我使用以下能够将数据从 JComboBox 传递到另一个 JFrame

public SelectUser()  {
    // Database Connection & Query Code Here
    while(rs.next())
    {
        Integer userID = rs.getInt("user_ID");
        String fname = rs.getString("fname");
        String lname = rs.getString("lname");
        item = new Object[] {userID, fname, lname};
        userSelect.addItem(new Item(userID, fname, lname));

    }
    private class Item {
        private int userID;
        private String fname;
        private String lname;

        public Item(Integer userID, String fname, String lname) {
            this.userID = userID;
            this.fname = fname;
            this.lname = lname;
        }

        public Integer getUserID() {
            return userID;
        }

        public String getFName() {
            return fname;
        }

        public String getLName() {
            return lname;
        }

        @Override
        public String toString() {
            return "ID: " + getUserID() + " " + getFName() + " " + getLName();
        }

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == select) {
            Item item = (Item) userSelect.getSelectedItem();
            System.out.println(item.getUserID() + " " + item.getFName() + " " + item.getLName());
            UserDash runDash = new UserDash(item.getUserID(), item.getFName(), item.getLName());
        }
    }
}

我希望这可以帮助任何想要做相同或类似事情的人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2020-04-14
    • 2018-10-02
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多