如何使Jtable输出的数据在单元格最中间
时间: 2024-02-22 18:58:45 浏览: 59
Swing JTable组件设置单元格合并
要使JTable输出的数据在单元格最中间,可以通过设置单元格的渲染器来实现。具体步骤如下:
1. 新建一个类,继承JLabel,并重写paintComponent()方法。
2. 在paintComponent()方法中,先调用super.paintComponent(g)方法,绘制默认的标签内容。
3. 获取单元格的大小和标签的大小,计算出标签的位置,并将标签绘制在单元格中央。
4. 在JTable中设置单元格的渲染器为自定义的标签类。
示例代码如下:
```java
class CenterRenderer extends JLabel implements TableCellRenderer {
public CenterRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setText((value == null) ? "" : value.toString());
setHorizontalAlignment(SwingConstants.CENTER);
setVerticalAlignment(SwingConstants.CENTER);
setSize(table.getColumnModel().getColumn(column).getWidth(), table.getRowHeight(row));
if (isSelected) {
setBackground(table.getSelectionBackground());
setForeground(table.getSelectionForeground());
} else {
setBackground(table.getBackground());
setForeground(table.getForeground());
}
return this;
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension d = getSize();
Dimension text = getPreferredSize();
int x = (d.width - text.width) / 2;
int y = (d.height - text.height) / 2;
g.drawString(getText(), x, y);
}
}
```
在JTable中设置渲染器:
```java
JTable table = new JTable(data, columnNames);
table.setDefaultRenderer(Object.class, new CenterRenderer());
```
这样就可以使JTable输出的数据在单元格最中间了。
阅读全文