Fix checkbox not being aligned on top when selected
This commit is contained in:
parent
1a81fd5a21
commit
48f8022b97
@ -15,6 +15,7 @@ import info.openrocket.swing.gui.widgets.SaveFileChooser;
|
||||
|
||||
import javax.swing.AbstractCellEditor;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.DefaultCellEditor;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JFileChooser;
|
||||
@ -100,7 +101,9 @@ public class CAExportPanel extends CSVExportPanel<CADataType> {
|
||||
super.initializeTable(types);
|
||||
|
||||
// Set custom renderers for each column
|
||||
table.getColumnModel().getColumn(0).setCellRenderer(new CheckBoxRenderer());
|
||||
TableColumn firstColumn = table.getColumnModel().getColumn(0);
|
||||
firstColumn.setCellRenderer(new CheckBoxRenderer());
|
||||
firstColumn.setCellEditor(new CheckBoxEditor());
|
||||
table.getColumnModel().getColumn(1).setCellRenderer(new LeftAlignedRenderer());
|
||||
table.getColumnModel().getColumn(2).setCellRenderer(new LeftAlignedRenderer());
|
||||
|
||||
@ -261,7 +264,6 @@ public class CAExportPanel extends CSVExportPanel<CADataType> {
|
||||
private static class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
|
||||
public CheckBoxRenderer() {
|
||||
setHorizontalAlignment(JLabel.CENTER);
|
||||
setVerticalAlignment(JLabel.TOP);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -270,10 +272,29 @@ public class CAExportPanel extends CSVExportPanel<CADataType> {
|
||||
setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
|
||||
setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
|
||||
setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); // Add top padding
|
||||
setVerticalAlignment(JLabel.TOP);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
private static class CheckBoxEditor extends DefaultCellEditor {
|
||||
public CheckBoxEditor() {
|
||||
super(new JCheckBox());
|
||||
((JCheckBox)getComponent()).setHorizontalAlignment(JLabel.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
|
||||
Component c = super.getTableCellEditorComponent(table, value, isSelected, row, column);
|
||||
if (c instanceof JCheckBox) {
|
||||
JCheckBox cb = (JCheckBox) c;
|
||||
cb.setVerticalAlignment(JLabel.TOP);
|
||||
cb.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
|
||||
}
|
||||
return c;
|
||||
}
|
||||
}
|
||||
|
||||
private static class LeftAlignedRenderer extends DefaultTableCellRenderer {
|
||||
public LeftAlignedRenderer() {
|
||||
setHorizontalAlignment(JLabel.LEFT);
|
||||
|
Loading…
x
Reference in New Issue
Block a user