我有一个JComboBox,其中的项是查询的结果。我在这里要做的是为每个项目设置一个标签和一个值。问题是,当我想要获取所选项目的值以创建新对象时,我无法。如你所见,我可以使用proveedorCombo获得标签。getSelectedItem()方法,但我不需要它,我需要ID,如何才能让它创建对象“a”?我试图将其放入“for bucle”中,如您所见,我显示了de-label和值,但我无法将该变量带到下面的创建对象实例中:
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());
}
}
您可以使用此代码获取ID:
Item item = (Item) proveedorCombo.getSelectedItem();
int id = item.getId();
顺便说一句,您应该使用DefaultListModel
而不是Vector
来保存列表项。这是因为如果您修改向量,列表不会更改,但如果您修改DefaultListModel
,更改会立即出现在列表中。
我有一个JComboBox选择项目的问题,有人能帮我吗?我已经实现了一个图形用户界面窗口,其中有各种文本字段和一个JComboBox。当我点击按钮,代码必须创建一个对象与字符串的文本字段和字符串的ComboBox,但我有一个在...获取的代码是: 我也试过: 但是不要工作!我不知道我是否需要一个ActionListener,但我认为这不是必需的。
问题内容: 嗨, 这是从JComboBox作为字符串获取值的正确方法,以及为什么它是正确的方法。谢谢。 要么 问题答案: 如果仅在JComboBox中放置(非空)引用,则两种方法都可以。 但是,第一种解决方案还允许将来进行修改,您可以在组合框中插入s,s,s等作为项目。 为了对值保持鲁棒性(仍然不强制转换),您可以考虑第三个选择:
问题内容: 我正在设计一个简单的数据库应用程序,在GUI中具有2个jComboBoxes。第一个jComboBox填充有SQL查询的结果。我希望第二个jComboBox填充第二个查询的结果,该查询在第一个框中合并了用户选择的值,但是我无法完全使它起作用。 我创建了2个类,一个类绘制GUI并包含main方法,第二个类查询我的Oracle数据库。 我的GUI类: 和我的数据库类: 我遗漏了不相关的代码
我创建了一个带有JComboBox CellEditor列的JTable。很好。然而,当我试图通过组合框检索所选值时,我只得到鼠标在特定行中选择的值。我似乎无法按每行获取所选值。这是我的代码:
这是一个相当普遍的问题,我用过的解决方案和我后来搜索发现的差不多。其中一个实现了带有< code>JLabel的< code>ListCellRenderer,它根据当前选择的索引启用或禁用自身: 问题是,尽管列表项在视觉上显示为禁用,但尽管调用了< code>setFocusable,它仍然可以被选中。我该如何禁用它?
1.我创建了一个JComboBox和Jtable。当用户从JComboBox中选择项目时,它们被添加到Jtable中 2.我不想让用户选择他以前在JComboBox中选择的项目 3.因此必须禁用选定的选项(不可选择)。我该怎么做?4.下面的代码在添加到JTable中后从JComboBox中删除该选定项,但我有兴趣禁用它