代码之家  ›  专栏  ›  技术社区  ›  Venkat

我可以将组合框添加到jtable的特定单元格中吗?

  •  1
  • Venkat  · 技术社区  · 14 年前

    我想将组合框添加到jtable的单元格中。

    model=new DefaultTableModel(data,col);
    JTableHeader head=new JTableHeader();
    head.setBackground(Color.BLUE);
    table=new JTable(model);
    table.add(head);
    JComboBox combo = new JComboBox();
    combo.addItem("Names");
    combo.addItem("Antony");
    combo.addItem("Victor");
    combo.addItem("Ramkumar");
    table.add(combo);
    

    但我在牢房里拿不到组合框。是否可以设置组合框?

    3 回复  |  直到 11 年前
        1
  •  3
  •   BenMorel Sonaten    11 年前

    您需要设置jtable的tablecelleditor。最好是搜索Java教程,但这里有一个简短的解释。

    jtable使用三个主要类来工作:

    1)tablemodel:它的功能是表示表中有多少行和列,并为表中的数据提供服务,它的主要方法是getvalue(row,col)和setvalue(value,row,col)。以及火灾事件来通知jtable重绘。

    2)TableCellRenderer:主要目的是在JTable的单元格中绘制组件。此部件仅喷漆:不工作!如果你画一个jcombobox,它不会消失,如果你点击它,或者如果你画一个jcheckbox,它不会选择/取消选择。

    3)tablecelleditor:它的主要目的是在jtablecell中绘制一个组件来编辑单元格的值。它接收事件并决定何时开始编辑,然后调用gettablecelleditorcomponent方法返回编辑器组件。返回的组件必须启动事件,以便TableCellEditor知道何时停止编辑并获取值并使用它调用TableModel.SetValue…或者取消编辑。

    因此,要在jtable中显示jcombobox,必须创建自己的tablecelleditor,如果以前没有做过,那么这不是一个简单的任务。

        2
  •  2
  •   Argiropoulos Stavros    14 年前

    好好看看这个 Java tutorial 并在此页中搜索“使用组合框作为编辑器”

        3
  •  0
  •   Jithesh V    11 年前

    试试这个:对我有用..点击单元格可以看到组合框。

     private void comboloader() {
            try {
                TableColumn gradeColumn = jTable1.getColumnModel().getColumn(0);
                JComboBox comboBox = new JComboBox();
    
                comboBox.removeAllItems();
    
                try {
                    comboBox.addItem("Item 1");
                    comboBox.addItem("Item 2");
                    comboBox.addItem("Item 3");
    
                } catch (NullPointerException e) {
                } catch (Exception e) {
                    e.printStackTrace();
                }
                gradeColumn.setCellEditor(new DefaultCellEditor(comboBox));
            } catch (Exception e) {
            }
        }