【发布时间】:2016-04-28 04:18:08
【问题描述】:
我有以下TableCellRenderer(不是DefaultTableCellRenderer),它允许我在JTable 的单元格中跳过行:
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.table.TableCellRenderer;
public class MyCellRenderer extends JTextArea implements TableCellRenderer {
Color highlightBackground = (Color) UIManager.get("Table.selectionBackground");
public MyCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setText((String) value); //or something in value, like value.getNote()...
setSize(table.getColumnModel().getColumn(column).getWidth(), getPreferredSize().height);
if (table.getRowHeight(row) != getPreferredSize().height) {
table.setRowHeight(row, getPreferredSize().height);
}
if (table.isRowSelected(row)) {
this.setBackground(highlightBackground);
} else {
this.setBackground(Color.WHITE);
}
return this;
}
}
我只想更改此渲染器的水平对齐方式。 (这意味着单元格的文本将位于其中心或右侧,现在它位于左侧)。
这是我使用 TableCellRenderer 的方法:
Table.getColumnModel().getColumn(1).setCellRenderer(new MyCellRenderer());
【问题讨论】:
-
渲染器的水平对齐是什么意思?您是指单元格对齐吗?
-
无需调用
setSize,JTable会自行处理。将对齐更改为什么?
标签: java swing jtable tablecellrenderer