当前位置: 首页 > 面试题库 >

JTable的特定行中的Celleditor(JComboBox)

濮俭
2023-03-14
问题内容

我不知道如何在特定行中设置一个jcombobox …现在我已经为所有行设置了这个jcombobox,但是我只希望在一行中设置它:

JComboBox cc = new JComboBox();
cc.addItem(jComboBox5.getSelectedItem()+"/"+jComboBox6.getSelectedItem()+"/"+jComboBox7.getSelectedItem()+" "+jComboBox1.getSelectedItem()+"."+jComboBox2.getSelectedItem());
jTable1.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(cc));
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
    renderer.setToolTipText("CLICCA PER LE DATE");
jTable1.getColumnModel().getColumn(3).setCellRenderer(renderer);

问题答案:

更新:
在测试我的(可能是不完整的)答案时,我遇到了一个非常好的SO问题,我认为它将比我能提供的更好:将JComboBox放入JTable

另一个更新: 我再次阅读了您的问题,并且意识到您要求输入 特定的行 。我能想到的唯一方法是创建一个自定义CellEditor,如下所示:

private static class MyCellEditor extends AbstractCellEditor implements TableCellEditor {

    DefaultCellEditor other = new DefaultCellEditor(new JTextField());
    DefaultCellEditor checkbox = new DefaultCellEditor(new JComboBox(new Object[] {"abc"}));

    private DefaultCellEditor lastSelected;

    @Override
    public Object getCellEditorValue() {

        return lastSelected.getCellEditorValue();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
            Object value, boolean isSelected, int row, int column) {
        if(row == 0) {
            lastSelected = checkbox;
            return checkbox.getTableCellEditorComponent(table, value, isSelected, row, column);
        }
        lastSelected = other;
        return other.getTableCellEditorComponent(table, value, isSelected, row, column);
    }

}

在此示例中,自定义CellEditor实际上是两个Editor,并且根据选择的行,特定的Editor将获得调用(无论是图形上还是字面上)。我承认这lastSelected似乎有点骗人,但老实说,我找不到一种更简单的方法来知道要返回哪个Editor值(因为getCellEditorValue没有参数)。

为了使您的表“正确”显示,您可能还需要对Renderer进行一些操作(因为Renderer可能会或可能不知道将JComboBox的选定值显示为初始值)。这取决于您如何初始化实际表中的数据。

为了完整起见,我的原始答案如下:

您可以在TableModel上使用JComboBox组件添加到该
addRow,如下所示:如何在JTable中添加行?

另请参阅:http
:
//docs.oracle.com/javase/tutorial/uiswing/components/table.html

我认为主要的问题是您将列编辑器/渲染器的思想与将存储在每一行中的实际数据混合在一起。



 类似资料:
  • 我试图弄清楚如何更改JTable中一行中单词的颜色。 例如,这是我的句子,在一行中; dmpsrv日志“2013年3月12日星期二15:33:03”(格林尼治标准时间)(DB=SS@2)pid=662node=“B2-W4”执行时间=1(s) 每一行的结构都是相同的,我想用粗体显示用户名。 但是我不知道我该怎么做?有人给点诡计吗? 谢谢

  • 问题内容: 每当单元格的内容与用户的输入匹配时,我都希望突出显示JTable中的特定行。以下代码是我到目前为止可以使用的代码: 注意:是在源文件中全局作用域。 现在,此操作在某种程度上可行,但是我将其添加到内的。JTables是在程序运行时动态创建的。但是,该方法会使所有已创建的JTables中的所有特定单元格突出显示。 如何在所有JTable中保留单元格以保留其特定的突出显示单元,而不是让所有J

  • 我想为自定义组合框中的值设置一个工具提示值。基本上,我的组合框包含一个人的首字母列表——当他们悬停在上面时,我想让它显示这个人的全名。我的组合框基本上是一个JTable的单元格/列,它有自己的TableCellRenler和DefaultCellEditor。列表是一个JList(模型中的内部类)——我尝试过直接设置“setToolTipText”方法,但似乎不起作用。 下面是代码: *JTabl

  • 问题内容: 我想为自定义组合框中的值设置工具提示值。基本上,我的组合框包含一个姓名缩写的列表- 当他们将鼠标悬停在上方时,我希望它显示该姓名的全名。我的组合框基本上是JTable的一个单元格/列,它具有自己的TableCellRenderer和DefaultCellEditor。该列表是一个JList(模型中的内部类)-iv尝试直接设置’setToolTipText’方法,但这似乎不起作用。 这是

  • 问题内容: 我有一个JTable,我需要以编程方式使用此代码选择一行: (其中i和j分别是有效的行号和列号)。 问题是,当您跳到一行时,JScrollPane不会移动。在这种情况下,表格很长,通常“选择的行”在屏幕上不可见,因此用户必须保持手动向上/向下滚动才能找到它。我想知道如何使JScrollPane自动跳转到该行的特定位置。 编辑:找到了一个可以做到这一点的班轮: 问题答案: 只是通过@ E

  • 我想知道是否可以使用我的数据库中的数据将JTable中的一些行灰化或呈现为不可见? 以下是我的JTable中的列: 显示“我的表格”时,我希望行带有d1。getDutyStatus(),其中dutyStatus=“Inactive”将灰显。我的表格当前可以更新为“活动”(按更新按钮)或“非活动”(按删除按钮)。我不希望用户能够编辑dutyStatus为“Inactive”的任何职责。非常感谢您的任