我想用JComboBox创建一个JTable。在JTable3列中,具有不同数据的JComboBox。我尝试通过DefaultCellEditor,但是所有的JCombobox都有相同的数据。
public class CustomComboEditor extends DefaultCellEditor {
private DefaultComboBoxModel model;
private DefaultComboBoxModel model1;
private DefaultComboBoxModel model2;
public CustomComboEditor() {
super(new JComboBox());
this.model = (DefaultComboBoxModel) ((JComboBox) getComponent()).getModel();
this.model1 = (DefaultComboBoxModel) ((JComboBox) getComponent()).getModel();
this.model2 = (DefaultComboBoxModel) ((JComboBox) getComponent()).getModel();
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int col) {
try {
model.removeAllElements();
model.addElement("");
String sql = "select query 1";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
while (rs.next()) {
model.addElement(rs.getString(1));
}
model1.removeAllElements();
model1.addElement("");
String sql1 = "select query 2";
pst = conn.prepareStatement(sql1);
rs = pst.executeQuery();
while (rs.next()) {
model1.addElement(rs.getString(1));
}
/*model2.removeAllElements();
model2.addElement("");
model2.addElement("Male");
model2.addElement("Female");*/
} catch (SQLException ex) {
Logger.getLogger(Order_Enquiry.class.getName()).log(Level.SEVERE, null, ex);
}
return super.getTableCellEditorComponent(table, value, isSelected, row, col);
}
}
this.model = (DefaultComboBoxModel) ((JComboBox) getComponent()).getModel();
this.model1 = (DefaultComboBoxModel) ((JComboBox) getComponent()).getModel();
this.model2 = (DefaultComboBoxModel) ((JComboBox) getComponent()).getModel();
model
、model1
和model2
是指向同一个对象的3个引用。因此,当您运行model1.removeAllElements();
时,您将删除之前存储的所有元素。
但一个单一的模型可能是好的。目前的问题是,无论您在表中的哪个位置,您都在运行完全相同的查询,所以您不能希望在不同的单元格中有不同的组合框条目。相反,您应该或多或少地拥有以下内容:
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int col) {
model.removeAllElements();
model.addElement("");
if(col==0){
// Prepare query 1
sql = ...
}else if(col==1){
// Prepare query 2
sql = ...
}else
...
// run query
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
// Fill the model
while (rs.next()) {
model.addElement(rs.getString(1));
}
return super.getTableCellEditorComponent(table, value, isSelected, row, col);
}
001/电视购买/约翰·史密斯/真 002/冰箱购买/让·史密斯/假
问题内容: 我有表SQLite数据库和列,,。行数不断变化(可能增加或减少)。如果我知道每一行的值和行数,是否可以执行一次SQL查询以根据ID更新所有具有不同值的和字段? 例如: SQL查询伪代码: 和是存储和字段的新值的数组。 如果,例如,和包含以下值: …然后查询后的数据库应如下所示: 这可能吗?我现在正在为每个查询更新一行,但是随着行数的增加,它将需要数百个查询。顺便说一下,我正在AIR中做
firebase中我的数据库截图 这里我有一个叫做产品的节点。在那里,我有许多子节点。所有这些节点都有一个共同的值叫做产品库存。我需要更新产品内部所有节点的产品库存值。我如何在android Studio(Java)中做到这一点,因为我正在开发一个购物应用程序?需要帮助。 流程是:用户将产品添加到购物车。在购物车里,我有ordernow按钮。因此,当用户现在单击order时,应该从products
问题内容: 我想让imageIcon在每个单元格中以不同的方式显示,但是由于某种原因,当我对其进行编译时,图像不会显示。它显示图像的名称,但是图像本身不显示。这是一张图片。http://i49.tinypic.com/r9ibrn.jpg } 问题答案: 您可以在调用构造函数时传递图像的名称(请阅读)。
问题内容: 我试图了解如何用不同的值更新多行,但我不明白。解决方案无处不在,但对我来说似乎很难理解。 例如,将三个更新更新为1个查询: 我读了一个例子,但我真的不明白如何进行查询。即: 如果在WHERE和IF条件中存在多个条件,我还不太清楚如何执行查询。 问题答案: 您可以这样操作: 我不了解您的日期格式。日期应使用本机日期和时间类型存储在数据库中。
问题内容: 有没有一种方法可以在HQL中创建一个Distinct查询。通过使用“ distinct”关键字或其他某种方法。我不确定distinct是否是HQL的有效键,但是我正在寻找与SQL关键字“ distinct”等效的HQL。 问题答案: 这是我们使用的hql的片段。(名称已更改,以保护身份)