java - JComboBox 从所选项目中的多个变量中获取变量

标签 java swing jcombobox

在我的代码中,我有一个 JComboBox,在其中放置数据库中的多个项目,所选项目使用操作监听器打印出来,但我想要获取的是从中选择的变量“code”的值comboBox.addItem("代码:"+code+"标题:"+name);

final JComboBox comboBox = new JComboBox();
            comboBox.setBounds(139, 40, 337, 20);
            contentPanel.add(comboBox);
            Connection con;
            try {
                con = DriverManager.getConnection(Main.URL);
                Statement statement = con.createStatement();
                ResultSet resultSet = statement.executeQuery("select * from APPDATABASE.SUBJECT");
                while (resultSet.next()){
                    String code = resultSet.getString(1);
                    String name = resultSet.getString(2);
                    comboBox.addItem("Κωδ: "+code+"    Τίτλος: "+name);
                }
                ActionListener actionListener = new ActionListener() {
                  public void actionPerformed(ActionEvent actionEvent) {
                    System.out.println("Selected: " + comboBox.getSelectedItem());
                  }
                };
                comboBox.addActionListener(actionListener);

                resultSet.close();
                statement.close();
                con.close();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }

最佳答案

这是一个简单的示例代码。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import swingdemoapp.table.model.ComboBoxItem;

public class GetItemsFromJComboBoxPanel extends JPanel implements ActionListener {

    private final JComboBox<ComboBoxItem> items;
    private final DefaultComboBoxModel model;
    private final ComboBoxItem[] itemList = new ComboBoxItem[100];

    private final JLabel codeLabel;

    public GetItemsFromJComboBoxPanel() {

        JPanel jPanel = new JPanel(new BorderLayout());
        initList();
        model = new DefaultComboBoxModel(itemList);
        items = new JComboBox<>(model);
        items.addActionListener(this);
        jPanel.add(items, BorderLayout.NORTH);
        codeLabel = new JLabel();
        jPanel.add(codeLabel, BorderLayout.CENTER);
        this.add(jPanel);
    }

    private ComboBoxItem[] initList() {
        for(int i = 0; i < 100; i++) {
            itemList[i] = new ComboBoxItem("Code" + i, "My Item " + i);
        }

        return itemList;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource().equals(items)) {
            ComboBoxItem selectedItem = (ComboBoxItem) items.getModel().getSelectedItem();
            codeLabel.setText(selectedItem.getCode());
        }
    }


}

这是域类ComboBoxItem:

public class ComboBoxItem {

    private String code;
    private String title;

    public ComboBoxItem() {
    }

    public ComboBoxItem(String code, String title) {
        this.code = code;
        this.title = title;
    }

    /**
     * @return the code
     */
    public String getCode() {
        return code;
    }

    /**
     * @param code the code to set
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * @return the title
     */
    public String getTitle() {
        return title;
    }

    /**
     * @param title the title to set
     */
    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "Code: " + code + " Title: " + title; 
    }


}

如果您不想使用域类,则必须将 Text 从 selectedItem 中分离出来,只打印出 Code 部分。

帕特里克

关于java - JComboBox 从所选项目中的多个变量中获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24851129/

相关文章:

java - Java中多个线程访问同一个对象

java - 使用 vaadin 在基于 spring 的元素中包含 css

java - 使用 Voiceover 实用程序在 MAC 的 JCombobox 中打开弹出窗口的 Control-Option-Space 键

java - 在空 JComboBox 上调用 addItem 会触发 actionPerformed 事件

java - 如何在它被杀死后检查进程状态,或者这甚至可能吗?

java - 从数据库创建 Hibernate 映射文件和 PJOS 时出错

java - 如何使用多个类的序列化来实现备份和恢复?

java - 将添加的字符串项保存到 ComboBox

java - 为什么 GUI 不工作,代码是否正确?

java - 使 JComboBox 透明