我目前正在尝试在Swing中构建一个扩展面板(类似于WPF的Expander
控件),我想保留操作它的常用方法(即setLayout
,{ {1}}等)。只应将它们路由到嵌入式面板(显示或隐藏的面板)。
如何做到这一点?覆盖add
的每个方法并将其重新路由到嵌入式JComponent
会很麻烦,但这是我看到的唯一方法。
或者我应该让嵌入式面板对外部可见,并强迫用户使用JPanel
之类的东西。但是,对于ExpanderPanel.getInnerPanel()
而言,它并不是替代品,我觉得这样做会很好。
答案 0 :(得分:2)
从 Swingx 项目中查看 JXTaskPane 。它已经做了你需要的。
答案 1 :(得分:1)
在1.5(ish)中,Swing将一些方法路由到JFrame
,JApplet
等内容窗格。虽然对于那些刚开始的人来说似乎有一些可用性优势,但实际上并没有解决问题。所以每个人都必须处理一个非常奇怪的API。所以我的建议是避免这种方法。
答案 2 :(得分:0)
如果你有一个Container小部件,它包含你想要显示和隐藏的面板,为什么不按你想要的方式布局你的内部面板,然后将它添加到Container面板,然后使用静态方法对Container说
JPanel p = new JPanel(); //用JPanel做点什么......
ContainerWidget.setContent(P);
ContainerWidget.expandPanel(P,TRUE);
有些人会像这样工作吗?