java - JTable 中的条件 JComboBox - 如何自动更改值

标签 java swing jtable jcombobox

我有一张满是组合框的 table , 我想要做的是以下内容:如果选择了组合框中的元素,则自动更改另一个组合(倒数)上的选择。 我想不出办法。在这里,我张贴了一张描述我想做什么的图片。 Matrix automatic JComboboxUpdate

我的表的代码如下:

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

  • 您必须重写 setValueAtsetValueAt 中的第一部分即将存储当前 JComboBox 中的整数值 作为CellEditorXxxTableModel,第二部分即将设置值到(另一个 JTables 单元格)XxxTableModel 中的另一个单元格


  • 我会是

    1. 使用DefaultTableModel

    2. 需要为 JComboBox 覆盖 getColumnClass(必须包含整数以避免解析)

    3. isCellEditable

    4. setValueAt in SSCCE form

关于java - JTable 中的条件 JComboBox - 如何自动更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20217544/

相关文章:

Java Swing JLabel 未出现

java - 如何在 JTable Cell 中显示图像?

java - 如何在 Java 中添加组件并将其置于 JFrame 的前面?

java - 如何在 Java 应用程序中打印 JTable 对象

java - im4java,mac 运行问题

java - 如何向我的应用程序用户发送确认电子邮件?

java - Java/Swing 中的高级 RTFEditorKit

java - 如何获取JFrame标题的值?

java - MySQL 区分大小写

java - 如何编写带有条件的 xpath 以获得满足我要求的所需网络元素列表