Swing将文本换行到表格的单元格中

时间:2016-05-13 08:51:34

标签: java swing jtable jtextarea

我想渲染一个JTable组件的单元格来支持换行,所以我在单元格中使用JTextarea,因为文本区域允许换行。这是我的代码:

//Render column with header Person
table.getColumn("Person").setCellRenderer(new RenderRedGreen());


final class RenderRedGreen extends DefaultTableCellRenderer {

    JTextArea textarea;

      @Override public Component getTableCellRendererComponent(
        JTable aTable, Object aNumberValue, boolean aIsSelected, 
        boolean aHasFocus, int aRow, int aColumn ) 
      {  
         String value = (String)aNumberValue;

         textarea = new JTextArea();
         aTable.add(textarea);
         textarea.setLineWrap(true);
         textarea.setWrapStyleWord(true);

          textarea.setText(value);
         aTable.setRowHeight(90);

        if (aNumberValue == null) return this;

        Component renderer = super.getTableCellRendererComponent(
                aTable, aNumberValue, aIsSelected, aHasFocus, aRow, aColumn
        );


        if (value.equals("Me")) 
          renderer.setForeground(Color.red);
        else
            renderer.setForeground(Color.black);

        return this;
      }
}

问题是文本没有被包装,所以我无法完全看到长文本。我做错了什么?

1 个答案:

答案 0 :(得分:0)

这些代码行可以帮助您包装数据并正确显示多行:

    textarea.setWrapStyleWord(true);
    textarea.setLineWrap(true);
    DefaultCaret caret = (DefaultCaret) textarea.getCaret();
    caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);