我无法使用 jcombobox 配置 jtable,我看过各种示例但没有成功。我有一个包含 3 列的表格和每个单元格的 Jcombobox。在第一个和最后一个 JCombobox 中有 Sports,在中央有一个 Criteria。
对于每一行,我必须使用第 3 列的值来制作表达式`(Sport s1, Criteria c, Sport s2);
我尝试使用自定义表模型,但使用 jcombobox 我不知道如何配置
@Override
public Object getValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
和
public Object setValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
使用 JCombobox 选项获取和设置值。
`
我使用这个模型来实现我的表:
class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
int numSports = DataSavedSports.loadNumeroSports();
private final List<Sport> objects = DataSavedSports
.loadListSports();
private final String[] columnNames = { "Name Sport 1", "Criteria",
"Name Sport 2" };
private final Class<?>[] metaModell = new Class[] { String.class,
Integer.class };
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return objects.size();
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
private Sport getRow(int row) {
return objects.get(row);
}
@Override
public Class<?> getColumnClass(int c) {
if (c < metaModell.length)
return metaModell[c];
return Object.class;
}
@Override
public boolean isCellEditable(int row, int col) {
return true;
}
public List<Sport> getJobs() {
return objects;
}
public void addRow(Sport v) {
this.objects.add(v);
fireTableDataChanged();
}
@Override
public Object getValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
}
我用来设置 Jcombobox 的方法是这样的
public void setColumnSports1(JTable table, TableColumn ColumnLav1) {
// Set up the editor for the sport cells.
final List<Sport> ListSports = DataSavedSports.loadListSports();
final JComboBox comboBox1 = new JComboBox();
for(Sport l : ListSports){
comboBox1.addItem(l.getIdSport());
}
comboBox1.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent ie){
String str = (String)comboBox1.getSelectedItem();
System.out.println("TESTTTT"+str);
}
});
ColumnLav1.setCellEditor(new DefaultCellEditor(comboBox1));
// Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Click for combo box");
ColumnLav1.setCellRenderer(renderer);
}
附言
我必须使用 JFrame 中的表并获取所选 Jcombobox 项的数据,因此缺少多重继承,是另一个问题,因为覆盖了各种组件。