java - 一个单元格中包含多个元素的 JTable

标签 java swing jtable

我喜欢创建一个带有复选框和一个或两个可选文本字段的单元格。

如果我单击复选框,则文本字段将可见。我试图制作一张 ASCII 图片应该是什么样子:

[ ]
[X] [some string]
[X] [value1] [value2]

我知道如何创建自定义渲染器,但我不确定如何返回多个元素。如果我有一个复选框的渲染器,我只返回 JCheckBox:
class BooleanRenderer extends JCheckBox implements TableCellRenderer, UIResource
{
    public Component getTableCellRendererComponent(JTable table, Object value,
                           boolean isSelected, boolean hasFocus, int row, int column) {
        // doing some stuff...
        return this;
    }
}

最佳答案

@Thomas 等人。关于区分模型和 View 是正确的。您的模型包括一个 boolean 状态和一些相应的文本;你的观点是 JCheckBox可以切换的和可以更改的文本。您需要一个渲染器来显示模型的当前状态,还需要一个编辑器来允许更改状态。

在这个 example , 类(class) Value保存选定状态和基础数据,a Double值(value)。 DataModel , 实现 TableModel , 管理一个 List<Value> .请注意,编辑器和渲染器都使用共同的 java.text.DecimalFormat .相关类 java.text.MessageFormat 在编写复选框的文本时可能很有用。

关于java - 一个单元格中包含多个元素的 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340061/

相关文章:

java - 有人用过pubchemdb吗?有类似的API吗?

Java Swing : Why can't I drawImage() on an instance of JFrame?

java - Swing - 删除 JMenu 中除最后一个 JMenuItem 之外的所有内容

java - 在 CodeNameOne 中填充组合框

java - Spring 注入(inject)到 Servlet

java - 如何从 JTable 中删除一行?

java - setCellRenderer() 不起作用

java - 为什么我的 for 循环只返回 JTable 中的第一个值?

java - 如何以编程方式查看 android 中 zip 中的内容(无需解压缩)

java - 添加 pacman 图像