【问题标题】:Swing wrap text in a table's cell在表格的单元格中摆动换行文本
【发布时间】:2016-09-09 09:10:28
【问题描述】:

我想渲染一个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;
      }
}

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

【问题讨论】:

  • 一般来说,换行并不是最难的部分,你可以将文本换行在<html> 标签中,它会换行,问题在于使行足够大以实际适合文本(顺便说一句,不要在渲染器中设置行高,这不是它的工作)。问题是,您似乎正在尝试设置JTextArea 和其他一些渲染,但只是简单地传回this ...那么这与JTextArea 有什么关系?
  • 作为example
  • new JTextArea(); 应该更像new JTextArea(3,20); //suggest size!
  • 如需尽快获得更好的帮助,请发帖minimal reproducible exampleShort, Self Contained, Correct Example
  • 我认为您可以使用带有<html> 标签的 DefaultTableCellRender 包装文本。并且 JTextArea 可以用作 EditorComponent 而不是将其用作渲染器组件。

标签: java swing jtable jtextarea


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-12-14
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2017-12-15
    相关资源
    最近更新 更多