package foo.bar.bug112023; import java.awt.Dimension; import java.awt.Font; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.border.Border; public final class TestClass extends JFrame { private static final String text = "How does \u011d look like?"; private static final Font theFont = Font.decode("monospaced"); private TestClass() { super("Test of NetBeans bug 112023"); final JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); setContentPane(mainPanel); List components = new ArrayList(10); components.add(new JLabel(text)); components.add(new JTextField(text)); components.add(new JTable(new Object[][]{{"key1", "value1"}, {"key2", text}}, new String[] {"Key", "Value"})); components.add(new JTextArea(text)); Border leftIndent = BorderFactory.createEmptyBorder(0, 20, 0, 0); for (Iterator i = components.iterator(); i.hasNext(); ) { JComponent comp = (JComponent) i.next(); String compTypeName = comp.getClass().getName(); int lastDotPos = compTypeName.lastIndexOf('.'); compTypeName = (lastDotPos != -1) ? compTypeName.substring(lastDotPos + 1) : compTypeName; JLabel label = new JLabel(compTypeName + ':'); Border currBorder = comp.getBorder(); Border cb = (currBorder == null) ? leftIndent : BorderFactory.createCompoundBorder(leftIndent, currBorder); Font f = comp.getFont(); f = theFont; f = f.deriveFont(Font.PLAIN, 1.6f * f.getSize()); comp.setFont(f); JComponent visualElem = comp; if (comp.getClass() == JTable.class) { JTable table = (JTable) comp; visualElem = new JScrollPane(table); table.setRowHeight(f.getSize() + 2 * table.getRowMargin() + 2); visualElem.setFont(f); } label.setAlignmentX(0.0f); visualElem.setBorder(cb); visualElem.setAlignmentX(0.0f); mainPanel.add(Box.createVerticalStrut(6)); mainPanel.add(label); mainPanel.add(visualElem); } mainPanel.add(Box.createVerticalGlue()); mainPanel.setPreferredSize(new Dimension(600, 300)); } public static void main(String args[]) { TestClass instance = new TestClass(); instance.run(); } private void run() { pack(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } }