0

アイテムがクエリの結果であるこの JComboBox があります。ここでやろうとしているのは、各アイテムにラベルと値を設定することです。問題は、新しいオブジェクトを作成するために選択したアイテムの値を取得したいときに、できないことです。ご覧のとおり、proveedorCombo.getSelectedItem() メソッドを使用してラベルを取得できますが、それは必要ありません。ID が必要です。オブジェクト「a」を作成するにはどうすれば取得できますか? ご覧のとおり、「for bucle」でそれを取得することができました。ラベルと値を表示しますが、その変数を以下の create object インスタンスに渡すことはできません。

public class AgregarPlato extends JDialog {

    private final JPanel contentPanel = new JPanel();

    public static void main(String[] args) {
        try {
            AgregarPlato dialog = new AgregarPlato();
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setVisible(true);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public AgregarPlato() {
        setBounds(100, 100, 546, 459);
        getContentPane().setLayout(new BorderLayout());
        contentPanel.setBackground(Color.WHITE);
        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
        getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(null);


        Vector model = new Vector();

        final JComboBox proveedorCombo = new JComboBox(model);
        proveedorCombo.putClientProperty("JComboBox.isTableCellEditor",
                Boolean.TRUE);

        proveedorCombo.setFont(new Font("Tahoma", Font.PLAIN, 11));
        proveedorCombo.setBounds(91, 56, 168, 20);
        contentPanel.add(proveedorCombo);
        ProveedorDAO dao = new ProveedorDAO();

        List<Proveedor> proveedor = dao.getAll();

        Object[][] elementos = new Object[proveedor.size()][2];

        for (int i = 0; i < proveedor.size(); i++) {
            Proveedor p = proveedor.get(i);
            elementos[i][0] = p.getId();
            elementos[i][1] = p.getNombre();
            int value = Integer.parseInt(elementos[i][0].toString());
            String label = elementos[i][1].toString();
            model.addElement(new Item(value, label + " " + value));         

        }


        JButton aceptarButton = new JButton("Aceptar");
        aceptarButton.setBounds(332, 387, 86, 23);
        contentPanel.add(aceptarButton);
        aceptarButton.setFont(new Font("Tahoma", Font.PLAIN, 11));
        aceptarButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    ArticuloDAO dao = new ArticuloDAO();
                    Articulo a = new Articulo();



                        System.out.println(proveedorCombo.getSelectedItem());


                        a.setProveedor(2);
                        dao.insert(a);

                    }
                }

            });
            aceptarButton.setActionCommand("OK");
            getRootPane().setDefaultButton(aceptarButton);
        }


    class ItemRenderer extends BasicComboBoxRenderer {
        public Component getListCellRendererComponent(JList list, Object value,
                int index, boolean isSelected, boolean cellHasFocus) {
            super.getListCellRendererComponent(list, value, index, isSelected,
                    cellHasFocus);

            if (value != null) {
                Item item = (Item) value;
                setText(item.getDescription().toUpperCase());
            }

            if (index == -1) {
                Item item = (Item) value;
                setText("" + item.getId());
            }

            return this;
        }
    }

    class Item {
        private int id;
        private String description;

        public Item(int id, String description) {
            this.id = id;
            this.description = description;
        }

        public int getId() {
            return id;
        }

        public String getDescription() {
            return description;
        }

        public String toString() {
            return description;
        }
    }

    public void actionPerformed(ActionEvent e) {
        JComboBox proveedorCombo = (JComboBox) e.getSource();
        Item item = (Item) proveedorCombo.getSelectedItem();
        System.out.println(item.getId() + " : " + item.getDescription());
    }
}
4

1 に答える 1

1

このコードを使用して ID を取得できます。

Item item = (Item) proveedorCombo.getSelectedItem();
int id = item.getId();

ちなみに、リスト項目を保持するDefaultListModel代わりに使用する必要があります。Vectorこれは、ベクトルを変更してもリストは変更されませんが、 を変更するとDefaultListModel変更がすぐにリストに表示されるためです。

于 2013-08-04T22:15:56.340 に答える