I trying to add a JPanel to another JPanel but am faced with the problem that the second Jpanel will not show up on the first one.
My basic structure of things is as follows --
I have a JPanel panel1 which has a BoxLayout and by virtue of HorizontalBoxes and VerticalBoxes i keep adding JComponents to it. All JComponents appear on panel1 except for the second JPanel. The code for the second JPanel which wont appear is as follows --
public class LabelMacroEditor extends JPanel implements PropertyChangeListener { private static final long serialVersionUID = 1L; private LabelMacroModel model; public LabelMacroEditor(LabelMacroModel bean) { this.model = bean; model.addPropertyChangeListener(this); setupComponents(); validate(); setVisible(true); } public void setupComponents() { Box allButtons = Box.createVerticalBox(); for(MacroModel macroModel : model.getMacroModelList()) { LabelMacroEditorEditableEntity macroEditorEntity = new LabelMacroEditorEditableEntity(macroModel); Box entityBox = Box.createHorizontalBox(); entityBox.add(macroEditorEntity.getUpButton()); entityBox.add(Box.createHorizontalStrut(15)); entityBox.add(macroEditorEntity.getMacroDetailsButton()); entityBox.add(Box.createHorizontalStrut(15)); entityBox.add(macroEditorEntity.getDownButton()); allButtons.add(entityBox); } add(allButtons); } @Override public void propertyChange(PropertyChangeEvent arg0) { revalidate(); } } I have tested LabelMacroEditor in a standalone way by adding it to a JFrame and found that it appears fine. Im assuming its has something to do with come confliction revalidate/setVisible or the like.
Am i missing something obvious ?
I can post more code from the JPanel that is adding LabelMacroEditor if there is a need.
EDIT : The code snippet from where im adding LabelMacroEditor is as follows --
private final LabelMacroModel labelMacroModel; private LabelMacroEditor labelMacroEditor; //code to populate labelMacroModel Box verticalBox = Box.createVerticalBox(); // Add all other JComponents to verticalBox labelMacroEditor = new LabelMacroEditor(labelMacroModel); verticalBox.add(labelMacroEditor); add(verticalBox);