为JTable创建多行标题 [英] Creating multi-line header for JTable
问题描述
我将JTable GUI组件与NetBeans一起使用.
I use JTable GUI component with NetBeans.
-
我想创建多行标题
I want to create multi-line headers
当我为表格标题创建自定义渲染器时,我能够做到这一点
I am able to this, when I create custom renderer for table headers
但我不想这么做,因为我喜欢默认值(我在程序中的其他地方都使用它).
BUT I don't want to, because I like default one (I use it everywhere else in program).
所以问题是:如何制作 标头为高?
So the problem is : How to make header heigher?
我的代码:
String headers[] = new String[3];
headers[0] = "Header1";
headers[1] = "Header2";
headers[2] = "<html><center>Long<br>Centered</br></center></html>";
DefaultTableModel dtm = new DefaultTableModel();
dtm.setColumnIdentifiers(headers);
dtm.setRowCount(5);
jTable1.setModel(dtm);
jTable1.getTableHeader().setPreferredSize(
new Dimension(jTable1.getColumnModel().getTotalColumnWidth(),32));
推荐答案
尝试以下操作:
table.getTableHeader().setPreferredSize(
new Dimension(table.getColumnModel().getTotalColumnWidth(), 32));
这将更改标题的大小:
要使文本居中,可以使用<center>
-标记:
To center the text, you can use the <center>
-tag:
headers[2] = "<html><center>Long Centered<br>Header";
编辑:
对齐方式由您的LookAndFeel设置.例如,WindowsTableHeaderUI
显式调用
The alignment is set by your LookAndFeel. WindowsTableHeaderUI
for example explicitly calls
setHorizontalAlignment(LEADING);
解决此问题的最简单方法是:
The easiest way to solve this is:
(JLabel)table.getTableHeader().getDefaultRenderer())
.setHorizontalAlignment(SwingConstants.CENTER);
请注意,此后在您更改LookAndFeel时,此更改将丢失.
Note that this change is lost when you change your LookAndFeel afterwards.
这篇关于为JTable创建多行标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!