我在NetBeans中使用JTable GUI组件。
我想创建多行标题
当我为表格标题创建自定义渲染器时,我能够这样做
但我不想,因为我喜欢默认的(我在程序中的其他地方使用它)。
所以问题是:如何制作 标题更高?
我的代码:
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));
答案 0 :(得分:5)
尝试以下方法:
table.getTableHeader().setPreferredSize(
new Dimension(table.getColumnModel().getTotalColumnWidth(), 32));
这会改变标题的大小:
alt text http://img96.imageshack.us/img96/7544/so2343391.png
要使文字居中,您可以使用<center>
- 标记:
headers[2] = "<html><center>Long Centered<br>Header";
alt text http://img710.imageshack.us/img710/705/so23436532.png
修改强>:
对齐方式由LookAndFeel设置。 WindowsTableHeaderUI
例如显式调用
setHorizontalAlignment(LEADING);
解决此问题的最简单方法是:
(JLabel)table.getTableHeader().getDefaultRenderer())
.setHorizontalAlignment(SwingConstants.CENTER);
请注意,之后更改LookAndFeel时,此更改会丢失。
答案 1 :(得分:1)
大家好我试过这个并且它有效:
DefaultTableCellRenderer r;
String headers[] = new String[3];
headers[0] = "Category";
headers[1] = "Item";
headers[2] = "<html><center>Packaging<br>unit</center></br></html>";
DefaultTableModel dtm = new DefaultTableModel();
table.setModel(dtm);
r = (DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer();
r.setHorizontalAlignment(JLabel.CENTER);
dtm.setColumnIdentifiers(headers);
table.getTableHeader().setPreferredSize(new Dimension(table.getColumnModel().getTotalColumnWidth(),32));