0

我有一个包含两列的 JTable:键名和值。在值列中允许有多种数据类型,如下图所示:

左边是键,右边是值(一个简单的

所以在第 1 列中,我可能在第 1 行有一个布尔值,在第 2 行有一个字符串。但该方法getColumnClass(...)只允许我为整个列设置数据类型。

有没有办法设置列行特定的数据类型?

问候,神话

4

1 回答 1

1

同一列不能有两种数据类型。但是对于您的情况,我的建议是使用渲染。

  1. 阅读编辑器和渲染器

  2. 将列数据类型定义为包含JPanel.

  3. 渲染列。您的 Renderer 类将面板返回到该列。它应该有一个constraint,基于您应该将组件添加到面板并返回面板。

这个例子展示了如何在这些情况下使用渲染。

class PanelCellRenderer extends JPanel implements TableCellRenderer {
public Component getTableCellRendererComponent(final JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
       // row number is used as a constraint.
        if(row == 0) {
            this.add( new JTextField("", 20));
        } else if(row == 1) {
            this.add( new JCheckBox());
        } else if(row == 2) {
            this.add( new JButton());
        } else {
            this.add( new JLabel("Row-4"));
        }
        return this;
   }
}

// 输出:

第一行是一个带有 的面板JTextField。同样,第 2、3 行有JCheckBoxJButton。第 4 行有一个JLabel带文本。

包含差异组件的面板

PS:这只是一个尝试。即使我以前没有这样做过。如果我错了,请纠正我。

于 2012-11-25T17:02:32.953 回答