独自のテーブルセルレンダラーを作成して、JTableのテキストを中央に配置できます
public class CenterCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
JLabel renderedLabel = (JLabel) super
.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
renderedLabel.setHorizontalAlignment(JLabel.CENTER);
return renderedLabel;
}
}
このテーブルセルレンダラーをテーブル全体に使用するには、次の手順に従います。
TableCellRenderer renderer = new CenterCellRenderer();
table.setDefaultRenderer(Object.class, renderer);
列固有のレンダラーを定義するには、メソッドJTable
をオーバーライドするサブクラスを定義する必要がありますgetCellRenderer
table = new JTable(...) {
public TableCellRenderer getCellRenderer(int row, int column) {
if (column == 2) {
return renderer;
}
// else...
return super.getCellRenderer(row, column);
}
};
あなたの質問についてもう少し考えたので、テキストを2列に配置します。必要に応じて、テキストを中央揃えにするために作成したものと同様の右揃えセルレンダラーを使用して、2番目の列のテキストを右揃えにすることができます。