多行JTable单元在编辑期间不是多行的

Igo*_*gor 2 java swing jtable jtextarea

我正在开发一个具有需要多行单元格的JTable的应用程序.因此我扩展了JTextArea并显示了所有内容,但是当我尝试编辑单元格时.文本显示在一行中,编辑后变为多行显示.我希望文本在编辑期间保持多线.有没有办法做到这一点?

Gil*_*zan 8

使用JTextArea 创建TableCellEditor(而不是使用JTextField的默认行为)并将其设置为JTable.

如果您愿意,也可以使用JEdi​​torPane来支持文本样式.

----编辑2 ----

新的TableCellEditor:

 class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor {

 JComponent component = new JTextArea();

 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
 int rowIndex, int vColIndex) {

 ((JTextArea) component).setText((String) value);

 return component;
 }

 public Object getCellEditorValue() {
 return ((JTextArea) component).getText();
 }
 }
Run Code Online (Sandbox Code Playgroud)

  • @Igor重读了答案.它说你应该为你的TableCellEditor使用JTextArea.据我了解您的问题,您正在为TableCellRenderer使用JTextArea.有关渲染器和编辑器的更多信息,请参见[此处](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender). (2认同)