我試圖給另一個JPanel添加一個JPanel,但是我面臨的問題是第二個Jpanel不會顯示在第一個JPanel上。
我對事物的基本結構如下 -
我有一個JPanel panel1
具有BoxLayout
並憑藉HorizontalBoxes
和VerticalBoxes
我不斷加入JComponents
它。所有JComponents
出現在面板1上,第二個JPanel
除外。 爲其不會出現在第二JPanel
的代碼如下 -Java swing - JPanel上的JPanel沒有顯示
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();
}
}
我已經通過將其加入到一個JFrame在一個獨立的方式測試LabelMacroEditor
並發現它顯示優良。我假設它與來衝突revalidate/setVisible或類似的東西有關。
我是否缺少明顯的東西?
我可以從JPanel
發佈更多的代碼,如果有需要可以添加LabelMacroEditor
。
編輯: 從那裏IM添加LabelMacroEditor
的代碼片段如下 -
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);
請在上面添加面板的代碼。 – 2012-03-18 12:50:14
爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-03-18 12:55:41
好的,System.out你的第二個面板的位置和大小,讓我知道結果。 – 2012-03-18 13:00:08