JTable单元格自动换行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JTable单元格自动换行相关的知识,希望对你有一定的参考价值。
JTable中某一单元格中的内容很多,后面的显示不出。请问怎样设置可以使单元格的String多行显示?
tao_3000;看不明白……
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class C extends JFrame
public C()
JTable tbl = new JTable(new String[][]
"JTable 里单元格内容的显示器是 TableCellRenderer。",
"默认的显示器(DefaultTableCellRenderer)继承 JLabel 所以不方便多行显示。",
"要多行显示应该继承 JTextArea(参看下面的 TableCellTextAreaRenderer 类)。",
"当然,别忘了调用 JTable.setDefaultRenderer() 登记你的显示器。",
"A B C D".split(" "));
tbl.setDefaultRenderer(Object.class, new TableCellTextAreaRenderer());
add(new JScrollPane(tbl));
setSize(800, 200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
public static void main(String[] args) new C();
class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer
public TableCellTextAreaRenderer()
setLineWrap(true);
setWrapStyleWord(true);
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
// 计算当下行的最佳高度
int maxPreferredHeight = 0;
for (int i = 0; i < table.getColumnCount(); i++)
setText("" + table.getValueAt(row, i));
setSize(table.getColumnModel().getColumn(column).getWidth(), 0);
maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height);
if (table.getRowHeight(row) != maxPreferredHeight) // 少了这行则处理器瞎忙
table.setRowHeight(row, maxPreferredHeight);
setText(value == null ? "" : value.toString());
return this;
参考资料:
http://www.javaspecialists.co.za/archive/newsletter.do?issue=106&locale=en_US
参考技术A 在JTable里面如何设置让单元格可以换行,或者自动调整高度以适合单元格内容的显示?
看看http://topic.csdn.net/t/20040420/08/2985645.html 这个你就明白了
以上是关于JTable单元格自动换行的主要内容,如果未能解决你的问题,请参考以下文章