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.AbstractCellEditor;
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
|
import javax.swing.DefaultCellEditor;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
@ -100,7 +101,9 @@ public class CAExportPanel extends CSVExportPanel<CADataType> {
|
|||||||
super.initializeTable(types);
|
super.initializeTable(types);
|
||||||
|
|
||||||
// Set custom renderers for each column
|
// 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(1).setCellRenderer(new LeftAlignedRenderer());
|
||||||
table.getColumnModel().getColumn(2).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 {
|
private static class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
|
||||||
public CheckBoxRenderer() {
|
public CheckBoxRenderer() {
|
||||||
setHorizontalAlignment(JLabel.CENTER);
|
setHorizontalAlignment(JLabel.CENTER);
|
||||||
setVerticalAlignment(JLabel.TOP);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -270,10 +272,29 @@ public class CAExportPanel extends CSVExportPanel<CADataType> {
|
|||||||
setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
|
setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
|
||||||
setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
|
setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
|
||||||
setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); // Add top padding
|
setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); // Add top padding
|
||||||
|
setVerticalAlignment(JLabel.TOP);
|
||||||
return this;
|
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 {
|
private static class LeftAlignedRenderer extends DefaultTableCellRenderer {
|
||||||
public LeftAlignedRenderer() {
|
public LeftAlignedRenderer() {
|
||||||
setHorizontalAlignment(JLabel.LEFT);
|
setHorizontalAlignment(JLabel.LEFT);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user