我有一张满是组合框的 table , 我想要做的是以下内容:如果选择了组合框中的元素,则自动更改另一个组合(倒数)上的选择。 我想不出办法。在这里,我张贴了一张描述我想做什么的图片。
我的表的代码如下:
public void createCriteriaMatrix(){
jTableCriteria = new JTable();
// COLUMNS
String[] column = new String[problem.getCriteria()+1];
for(int i=0; i<problem.getCriteria()+1; i++){
column [i] = " "+i;
if(i==0){
column [i] = " ";
}
}
// DATA CELLS
String [][] data = new String[problem.getCriteria()][problem.getCriteria()+1];
for(int j=0; j<problem.getCriteria()+1; j++){
for(int i=0; i<problem.getCriteria(); i++){
data [i][j]=" ";
if(j==0){
data [i][j] = " "+(i+1);
}
}
}
//SOME TABLE FORMAT
DefaultTableModel model = new DefaultTableModel(data , column ){
@Override
public boolean isCellEditable(int row, int column) {
return column != 0;
}
};
//Calling to RenderCells() to format cell colors
jTableCriteria.setDefaultRenderer (Object.class, new RenderCells());
jTableCriteria.setModel(model);
jTableCriteria.getTableHeader().setReorderingAllowed(false);
this.placeCombosTable();
}
public void placeCombosTable(){
for(int i=0; i<=problem.getCriteria(); i++){
for(int j=0; j<=problem.getCriteria(); j++){
TableColumn weighting= jTableCriteria.getColumnModel().getColumn(i);
JComboBox comboBox = new JComboBox();
comboBox.addItem("1");
comboBox.addItem("2");
comboBox.addItem("3");
comboBox.addItem("4");
comboBox.addItem("5");
comboBox.addItem("6");
comboBox.addItem("7");
comboBox.addItem("1/2");
comboBox.addItem("1/3");
comboBox.addItem("1/4");
comboBox.addItem("1/5");
comboBox.addItem("1/6");
comboBox.addItem("1/7");
if(i==j){
comboBox.setSelectedIndex(0);
}
weighting.setCellEditor(new DefaultCellEditor(comboBox));
}
}
}
最佳答案
使用官方 Oracle 教程中的代码示例 How to use Table - Using a Combo Box as an Editor , 在模型中只存储来自 JComboBox 的选定值,而不是 JComboBox
您必须重写
setValueAt
,setValueAt
中的第一部分即将存储当前JComboBox 中的
到整数值
作为CellEditorXxxTableModel
,第二部分即将设置值到(另一个 JTables 单元格)XxxTableModel 中的另一个单元格
我会是
使用
DefaultTableModel
需要为
JComboBox
覆盖getColumnClass
(必须包含整数以避免解析)isCellEditable
关于java - JTable 中的条件 JComboBox - 如何自动更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20217544/