私は4つの列を持つJTableを持っています。私はそれらの列のうちの1つのヘッダーを中央に揃えようとしています。私は半分の解決策を得ましたが、問題はヘッダーのデフォルトのレンダリング/スタイルが失われているようです。スクリーンショットを参照してください。私は現在のTableCellRendererを取得し、ヘッダーの配置をCENTERに変更し、適合したTableCellRendererを特定の列に適用したいと考えています。これどうやってするの?デフォルトレンダリングを失うことなくTableCellRendererを変更するにはどうすればよいですか?
テーブルのスクリーンショット
私のJTableクラス
public class MyTable extends JTable {
public MyTable() {
String[] headers = { "Parent", "Summary", "Key", "Processed" };
MyTableModel model = new MyTableModel(headers);
Object[] testrow = { "TST-99999", "S", "K", false };
model.addRow(testrow);
setModel(model);
Enumeration<TableColumn> columns = getColumnModel().getColumns();
while (columns.hasMoreElements()) {
TableColumn column = (TableColumn) columns.nextElement();
System.out.println(column.getHeaderValue());
column.setResizable(false);
switch ((String) column.getHeaderValue()) {
//case "Parent":
//case "Key":
case "Processed":
column.setMaxWidth(80);
column.setMinWidth(80);
column.setHeaderRenderer(new CenterRenderer());
break;
}
}
}
}
私のTableModelクラス
public class MyTableModel extends DefaultTableModel {
public MyTableModel(String[] headers) {
for(String header:headers){
addColumn(header);
}
}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
@Override
public Class<?> getColumnClass(int index) {
switch (index) {
case 0:
return String.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return Boolean.class;
default:
return String.class;
}
}
}
マイTableCellRendererをクラス
public class CenterRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
label.setHorizontalAlignment(SwingConstants.CENTER);
return label;
}
}
そして、あなたのコードがある... –
コードどのようにあなたを投稿してくださいここにいる人々があなたを助けることができるように、あなたがしたことを達成しました。デフォルトでは – Blip
のヘッダーテキストが中央に表示されます。 – Braj