JCheckBox (@NotNull ActionListener listener) { return new JCheckBox() { private int myBaseline = -1; { addActionListener(listener); } @Override public int getBaseline(int width, int height) { if (myBaseline == -1) { JCheckBox checkBox = new JCheckBox("Foo", true); // NON-NLS Dimension size = checkBox.getPreferredSize(); myBaseline = checkBox.getBaseline(size.width, size.height) - JBUIScale.scale(1); } return myBaseline; } @Override public void setUI(ButtonUI ui) { myBaseline = -1; super.setUI(ui); } @Override public Dimension getPreferredSize() { Dimension size = super.getPreferredSize(); return new Dimension( size.width + JBUIScale.scale(8), size.height + JBUIScale.scale(2) ); } }; }