java jtable 行_java – 如何在JTable行内自动换行

我有一个简单的JTable,它显示来自另一个JTable的行的详细信息(以列格式).这很好用.但是,有时连续的文本很长,因此用户最终不得不滚动而不是整齐.

如何将文本连续包装并允许行高更改以显示其中的所有文本.

这是代码:

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

@Override

public void valueChanged(ListSelectionEvent e) {

if (!e.getValueIsAdjusting()) {

int selectedRow = table.getSelectedRow();

DefaultTableModel newModel = new DefaultTableModel();

String rowName = "Row: " + selectedRow;

newModel.setColumnIdentifiers(new Object[]{rowName});

for (int i = 0; i < table.getModel().getColumnCount(); i++) {

newModel.addRow(new Object[]{table.getModel().getValueAt(selectedRow, i)});

}

JTable newTable = new JTable(newModel) {

/**

*

*/

private static final long serialVersionUID = 1L;

@Override

public Dimension getPreferredScrollableViewportSize() {

return new Dimension(140, 240);

}

};

newTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

newTable.setRowHeight(14, 30);

TableColumnAdjuster tcanewTable = new TableColumnAdjuster(newTable);

tcanewTable.setColumnHeaderIncluded(true);

tcanewTable.setColumnDataIncluded(true);

tcanewTable.setOnlyAdjustLarger( true );

tcanewTable.setDynamicAdjustment( true );

tcanewTable.adjustColumns();

// Apply any custom renderers and editors

JOptionPane.showMessageDialog(frame, new JScrollPane(newTable),

rowName, JOptionPane.PLAIN_MESSAGE);

}

}

});

解决方法:

您可以通过将JTextArea用作表中该列的TableCellRenderer来完成此操作.例如:

static class WordWrapCellRenderer extends JTextArea implements TableCellRenderer {

WordWrapCellRenderer() {

setLineWrap(true);

setWrapStyleWord(true);

}

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

setText(value.toString());

setSize(table.getColumnModel().getColumn(column).getWidth(), getPreferredSize().height);

if (table.getRowHeight(row) != getPreferredSize().height) {

table.setRowHeight(row, getPreferredSize().height);

}

return this;

}

}

要在表中使用WordWrapCellRenderer:

table.getColumnModel().getColumn(columnIndex).setCellRenderer(new WordWrapCellRenderer());

标签:java,swing,jtable

来源: https://codeday.me/bug/20190527/1166568.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值