当前位置: 首页 > 知识库问答 >
问题:

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

蔡辰钊
2023-03-14

我的表的代码如下:

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));
        }

    }             
}

共有1个答案

杭昊空
2023-03-14

>

  • 使用Oracle官方教程“如何使用表”中的代码示例-使用组合框作为编辑器,在model中只存储JComboBox中的选定值,而不是JComboBox

    您必须重写setvalueatsetvalueat内的第一部分将把当前JComboBox中的integer value作为Celleditor存储到XxxTableModel,第二部分将把值设置到(另一个JTables单元格)XxxTableModel中的另一个单元格

    >

  • 我会

    >

  • 使用DefaultTableModel

    可以重写JComboBoxGetColumnClass(必须包含整数以避免解析)

  •  类似资料:
    • 问题内容: 我正在从数据库中成功获取数据值。我也将它们存储到一个数组中。我需要将String数组作为项的加载,以响应执行的关键操作。每当获取按键值时,如何获取按键值,就如何重新加载项目。相反,我需要动态刷新项目。 问题答案:

    • 问题内容: 我的JTable有问题。我的JTable显示数据库的内容。一个数据库表具有名称类别。每个类别都显示在JComboBox中。如果单击类别,则应该更新表内容。 这是我的代码的简短摘要,因此可以更轻松地为我提供帮助。该代码应可运行: (TestClass-主要) (如果需要,则为TestTableModel-AbstractTableModel(您需要它来执行代码!) 使用此短代码,如果更改

    • 我试图在点击组合框时获取当前行数据。我的问题是,如果我试图在单击组合框时获取详细信息,则检索到的数据是错误的。 这是在集合中填充无效数据。请按照下面提到的确切步骤进行复制。 请运行代码以复制该问题,因为它只在初始选择期间工作,而不是之后。 注意:请仅在第二列中单击“直接” 下面是示例代码:

    • 现在,在第一行第三列(“OK”)中,您可以在JComboBox中选择表示一行的不同条目。因此一行有三个引用另一行的JComboBoxes。如果您在这样的JComboBox中单击,您会注意到它总是选择第一个条目,而不是您在单击之前看到的带有数字的条目。 也许现在你明白我想做什么了?

    • 问题内容: 假设我要对JComboBox中的箭头使用自定义图像,该怎么做? 我知道可以使用synth xml文件甚至UIManager.put(…),但是我不知道如何。我现在要做的就是将箭头图像更改为其他图像,无论是以编程方式还是仅覆盖其使用的图像。我到底该怎么做? 问题答案: 您可以在中覆盖。是一个方便的起点。 然后安装它。

    • 我试图添加if-else语句来更改文本的颜色。然而,它并不能很好地工作。我希望只把40分以下的分数改成红色,但我不知道为什么我的文字都改成了红色。我能知道我犯了什么错误吗? 在if-else语句中,我编写了当标记低于40时更改文本颜色的代码。但是,它会将所有文本更改为红色。