我有一個面板被一個動作改變了,它用一個具有不同最小尺寸的新面板替換掉它的子面板。我需要通知我的JSplitPane
其中一個兒童面板已更改,因此我可以撥打updateToPreferedSize
方法。有沒有事件已經被解僱了,我應該聽聽?如果不是,我該如何拋出一個父母可以捕獲的事件來通知它?如何報告面板更改爲父容器?
3
A
回答
3
最簡單的方法是在面板上觸發一個自定義propertyChange事件,該事件將子對象交換出來,以便在它將子對象關閉後觸發該事件。即使世界在這裏一個很好的例子: http://download.oracle.com/javase/tutorial/javabeans/properties/bound.html
一旦你做到了這一點,調整JSplitPane可以註冊一個監聽器和這裏描述偵聽該屬性: http://download.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html
概括起來,在面板互換孩子,你將需要初始化的PropertyChangeSupport:
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
然後,當你換出的面板:
//All code to swap out the panel goes here
this.pcs.firePropertyChange("childUpdated", false, true);
而且在調整JSplitPane,你需要的東西是這樣的:
//...where initialization occurs:
...
amountField.addPropertyChangeListener("childUpdated",
new ChildUpdateListener());
...
class ChildUpdateListener implements PropertyChangeListener {
public void propertyChanged(PropertyChangeEvent e) {
updateToPreferedSize();
}
}
+0
有趣且很好的+1 – mKorbel
0
我不知道,而T3想這也應該工作:
panel.revalidate();
panel.repaint();
相關問題
- 1. 如何更改父容器的面板高度以匹配子內容?
- 2. 如何更改gwt面板的內容?
- 3. 將ASP.NET更新面板設置爲其父容器的100%?
- 4. 如何根據SSRS報告的內容更改SSRS報告的高度?
- 5. VS報告 - 報告查看器不適用於ASP:面板
- 6. 如何更改DevExpress拆分容器控件面板名稱?
- 7. 更改報告頁面方向
- 8. Telerik報告 - 如果表/列表爲空,如何隱藏面板
- 9. 更改GUIDE對象的父面板
- 10. 泊塢窗如何報告裏面容器
- 11. 將默認發票報告更改爲自定義報告?
- 12. 在其他面板更改ListBox時更新面板內容
- 13. 如果我在子報告中進行更改,是否會影響所有父報告,則會在多個父報告中共享一個子報告?
- 14. 如何更改水晶報表模板
- 15. 如何更改窗口的子面板的更改上的父面板的所有組件值
- 16. 賈斯珀報告 - 如何更改xpath執行器工廠
- 17. 更改內容右面板的
- 18. EF4 ObjectStateManager不報告更改?
- 19. ComponentOne報告 - 更改Forecolor
- 20. 從子ViewController報告更改
- 21. ReportViewerForMvc報告內容爲空
- 22. 更改面板
- 23. 更改面板
- 24. Bootstrap:如何更改選項卡內容和其他面板
- 25. Extjs:當父面板設置爲「display:none」時,可以訪問組件,而父面板容器「display:none」
- 26. 導出SSRS報告用冷凍面板
- 27. Fancybox - 更改父級內容
- 28. 如何更改現有報告的水晶報告中的參數類型?
- 29. 使用MVVM更改父容器的可見性更改的TextBox.Text
- 30. Eclipse的Windows生成器動態更改面板的內容
什麼發起掉呢? – trashgod