我无法使用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);
}
PS
我必须在JFrame中使用该表并获取所选Jcombobox项的数据,因此多重继承的缺失是另一个问题,因为覆盖了各种组件。