У меня есть JTable с четырьмя столбцами. Я пытаюсь центрировать выравнивание заголовка одного из этих столбцов. Я получил половину рабочего решения, но проблема в том, что по умолчанию рендеринг/стиль заголовка кажется потерянным. См. Снимок экрана. Я хотел бы получить текущий 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