KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Is there a look-and-feel-independent way to align a component (e.g. a JLabel ) horizontally with the text of a JCheckBox ? I am trying to use values from the UIDefaults to predict the location of the text relative to the top-left corner of the JCheckBox . I have found a combination that gives the right result for the Metal, Windows, Motif and Aqua Look-and-Feels: But not in Nimbus: Is there a utility method somewhere that will reliably give X,Y offsets for the text in all Look-and-Feels? Code (note: to avoid any layout side-effects I used a null layout for this test): import java.awt.Insets; import javax.swing.JApplet; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.UIManager; import javax.swing.border.Border; public class AlignCheckBoxText extends JApplet { public AlignCheckBoxText() { setLayout(null); checkBox = new JCheckBox("Hello, World!"); label = new JLabel("Hello, World!"); add(checkBox); add(label); } @Override protected void validateTree() { checkBox.setLocation(0, 0); checkBox.setSize(checkBox.getPreferredSize()); int labelX = UIManager.getIcon("CheckBox.icon").getIconWidth(); Insets cbInsets = UIManager.getInsets("CheckBox.margin"); if (cbInsets != null) labelX += cbInsets.left + cbInsets.right; Border cbBorder = UIManager.getBorder("CheckBox.border"); if (cbBorder != null) { Insets borderInsets = cbBorder.getBorderInsets(checkBox); if (borderInsets != null) { labelX += borderInsets.left; } } label.setLocation(labelX, checkBox.getHeight()); label
Tags (comma-separated)
Save Edits
Cancel