java - 如何在 JTable Cell 中显示多行

标签 java swing jtable

我想创建一个如下图所示的JTable:enter image description here

将使用哪个 java 类,可能如何使用?

最佳答案

多行 JTable 单元格可以轻松使用自定义的 TableCellRenderer。使用以下步骤创建 TableCellRenderer

第 1 步:创建 TableCellRenderer

以下代码显示为 String[] 值创建多行 TableCellRenderer。可以将 String[] 更改为 Vector 或其他 Collection 类型

public class MultiLineTableCellRenderer extends JList<String> implements TableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        //make multi line where the cell value is String[]
        if (value instanceof String[]) {
            setListData((String[]) value);
        }

        //cell backgroud color when selected
        if (isSelected) {
            setBackground(UIManager.getColor("Table.selectionBackground"));
        } else {
            setBackground(UIManager.getColor("Table.background"));
        }

        return this;
    }
}

第 2 步:将 TableCellRenderer 设置到 JTable

    MultiLineTableCellRenderer renderer = new MultiLineTableCellRenderer();

    //set TableCellRenderer into a specified JTable column class
    table.setDefaultRenderer(String[].class, renderer);

    //or, set TableCellRenderer into a specified JTable column
    table.getColumnModel().getColumn(columnIndex).setCellRenderer(renderer);

这是我测试过的截图:

Multi-line TableCellRenderer Test

关于java - 如何在 JTable Cell 中显示多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955595/

相关文章:

java - 2D 字符串数组转换为 2D Int 数组

java - 屏蔽特定号码?

java - 如何从 Ant 构建文件设置 Eclipse 构建路径和类路径?

java - 一旦计数器达到某个值,就递增数组

java - 内存游戏的 GUI 组件

java - 是否可以将数组的 ArrayList 添加到文件中?

java - 从 actionlistener 访问在 main 中创建的 JFrame

java - 添加文本时自动调整 jPanel 的大小

java - 如何防止单元格在被选中时突出显示?

java - 使用 Java 中的单一模式填充表