Ich habe eine JTable mit vier Spalten. Ich versuche, den Header einer dieser Spalten zu zentrieren. Ich habe eine halb funktionierende Lösung, aber das Problem ist, dass das Standard-Rendering/Stil der Kopfzeile verloren scheint. Siehe Screenshot. Ich möchte den aktuellen TableCellRenderer abrufen, die Kopfausrichtung auf CENTER ändern und den angepassten TableCellRenderer auf eine bestimmte Spalte anwenden. Wie kann ich das machen?Wie kann ich einen TableCellRenderer ändern, ohne das Standard-Rendering zu verlieren?
Screenshot der Tabelle
Meine Klasse 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;
}
}
}
}
Meine Tablemodel Klasse
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;
}
}
}
Meine Table Klasse
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;
}
}
Und der Code ist ... –
bitte den Code schreiben, wie Sie habe erreicht, was du getan hast, damit Leute hier draußen dir helfen können. – Blip
Standardmäßig wird der Headertext in der Mitte angezeigt. – Braj