1-设置 JTable header height错误方式
table.getTableHeader().setPreferredSize(new Dimension(10,10));
为什么是错误的?请看截图
当拖动列的时候 错误就出现了?表头和列错乱了.而国内清一色的采用上一种错误方式
2 正确的解决方式:
我们公司大神 坤哥在http://stackoverflow.com/ 找到的解决方案:
http://stackoverflow.com/questions/11686535/how-to-change-jtable-header-height
import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.Arrays; import javax.swing.*; import javax.swing.table.*; public class TableHeaderHeightTest { private static int HEADER_HEIGHT = 32; private JTable makeTable() { JTable table = new JTable(new DefaultTableModel(2, 20)); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); return table; } public JComponent makeUI() { JPanel p = new JPanel(new GridLayout(2,1)); JTable table1 = makeTable(); //Bad: >>>> JTableHeader header = table1.getTableHeader(); //Dimension d = header.getPreferredSize(); //d.height = HEADER_HEIGHT; //header.setPreferredSize(d); //addColumn case test header.setPreferredSize(new Dimension(100, HEADER_HEIGHT)); p.add(makeTitledPanel("Bad: JTableHeader#setPreferredSize(...)", new JScrollPane(table1))); //<<<< JTable table2 = makeTable(); JScrollPane scroll = new JScrollPane(table2); scroll.setColumnHeader(new JViewport() { @Override public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); d.height = HEADER_HEIGHT; return d; } }); // //or // table2.setTableHeader(new JTableHeader(table2.getColumnModel()) { // @Override public Dimension getPreferredSize() { // Dimension d = super.getPreferredSize(); // d.height = HEADER_HEIGHT; // return d; // } // }); p.add(makeTitledPanel("Override getPreferredSize()", scroll)); final List<JTable> list = Arrays.asList(table1, table2); JPanel panel = new JPanel(new BorderLayout()); panel.add(p); panel.add(new JButton(new AbstractAction("addColumn") { @Override public void actionPerformed(ActionEvent e) { for(JTable t: list) { t.getColumnModel().addColumn(new TableColumn()); JTableHeader h = t.getTableHeader(); Dimension d = h.getPreferredSize(); System.out.println(d); } } }), BorderLayout.SOUTH); panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); return panel; } private static JComponent makeTitledPanel(String title, JComponent c) { JPanel p = new JPanel(new BorderLayout()); p.add(c); p.setBorder(BorderFactory.createTitledBorder(title)); return p; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { createAndShowGUI(); } }); } public static void createAndShowGUI() { JFrame f = new JFrame(); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); f.getContentPane().add(new TableHeaderHeightTest().makeUI()); f.setSize(320, 320); f.setLocationRelativeTo(null); f.setVisible(true); } }
相关推荐
在Java Swing中,`JTable` 是用于展示二维数据的组件,它允许用户查看和编辑数据。本示例探讨如何在`JTable`中添加`CheckBox`,并实现表头的`JCheckBox`全选联动功能。这在需要用户进行多选操作的界面中非常常见,...
实现设置JTable中某些单元格的背景色
3. **设置RowSorter到JTable**:将`RowSorter`设置到`JTable`上,`JTable`会自动处理排序逻辑。 ```java JTable table = new JTable(new DefaultTableModel()); table.setAutoCreateRowSorter(true); ...
### Java Swing JTable 经典列设置与表格颜色设置详解 #### 一、概述 本文档将详细介绍如何在Java Swing框架下使用`JTable`组件进行经典列设置以及表格颜色的自定义设置,并通过一个实际的例子展示如何实现这些...
### JTable数据模型设置与数据库综合应用解析 #### 一、引言 本文档主要介绍如何在Java应用程序中使用`JTable`组件结合SQL Server 2000数据库进行数据展示与管理。通过构建自定义的数据模型(`TableModel`),可以...
可以创建多个`JTableHeader`实例,并通过设置`JTable`的`columnModel`属性来调整列的布局。同时,自定义的渲染器可以帮助我们在表头中显示多层次的信息。 **2. 跨行列表体** 跨行列表体通常涉及到单元格合并,这在...
JTable的标题可以通过`JTableHeader`进行定制。默认情况下,用户可以拖动标题来重新排列列。允许或禁止这一行为,可以通过`table.getTableHeader().setReorderingAllowed(false)`来设置。 此外,JTable还支持数据的...
同时,需要确保在`JTableHeader`的`resizeMode`设置为`TableHeader.RESIZE_MODE_NONE`,以防止用户意外地改变列宽。 5. **示例代码**: ```java JTable table = new JTable(); JTableHeader header = table....
`JTableHeader`类用于管理和定制JTable的标题栏。通过该类可以实现标题栏的重排、禁用拖拽等功能。 ```java table.getTableHeader().setReorderingAllowed(false); // 禁止重新排列标题栏 table.getTableHeader()....
在Java的Swing库中,`JTable`是用于创建二维数据展示的组件,它类似于电子表格。在处理`JTable`时,我们有时需要使其单元格内容支持自动换行,以便更好地显示长文本。标题“JTable自动换行”正是指向这个功能,即...
1.设置表格的宽度和高度 2.要显示表头 3.新加列,将列设为下拉框 4.表格排序 3. JTable事件响应和项目设想 4.一个游戏:《java连连看》 1.需求分析 2.编写TableModel和界面实现 3.连连看事件监听 总结和任务
JTable使用 JTable使用JTable使用JTable使用
- **行高设置**:`table.setRowHeight(20)`用于设置表格的行高。 - **列宽设置**:通过循环遍历所有的列,并使用`table.getColumnModel().getColumn(i).setPreferredWidth(width)`来设置每一列的推荐宽度。 - **监听...
Swing JTable组件设置单元格合并,内置Test测试类,核心API GridBagTable tasktable = new GridBagTable(model); tasktable.mergeCells(startRow, endRow, 0, 0);
在 JTable 中,可以使用 `setRowHeight(int rowHeight)` 方法来设置表格的高度。这个方法可以设置指定行的高度。例如: ```java table1.setRowHeight(30); ``` 这将设置表格的高度为 30 像素。 设置表格的宽度 ...
当`JTable`需要获取数据时,`TableModel`可以根据这个信息返回正确的值。 3. **设置`JTable`的行头和列头**: 如果你需要合并行头或列头,`JTableHeader`提供了`setResizingModel`和`setHeaderView`方法,你可以...
JTable的显示效果
JTable组件可以通过设置表格的宽度和高度、显示表头、添加列、设置列的下拉框等方式进行美化。这些设置可以通过JTable的API来实现。 5. JTable事件响应 JTable组件提供了多种事件响应机制,例如选中单元格、双击...
可以使用 `setRowHeight` 方法设置行高,例如:`table.setRowHeight(20);` 2. 设置当前行数 可以使用 `DefaultTableModel` 对象设置当前行数,例如: ``` DefaultTableModel tableModel = (DefaultTableModel)...
`setPreferredScrollableViewportSize`方法被用来设置表格在滚动面板中的理想大小,这样可以确保表格在窗口中正确显示。`JScrollPane`被用来包裹`JTable`,提供滚动功能。`JFrame`的`contentPane`添加了`JScrollPane...