1

我目前正在尝试在 Swing 中构建一个扩展面板(类似于 WPF 的Expander控件),并且我想保留操作它的常用方法(即setLayoutadd等)。只有它们应该被路由到嵌入式面板(显示或隐藏的面板)。

如何做到这一点?覆盖每种方法JComponent并将其重新路由到嵌入式JPanel会很麻烦,但这是我看到的唯一方法。

或者我应该让嵌入式面板对外部可见,并强制用户使用类似的东西ExpanderPanel.getInnerPanel()。但是,它不是JPanel我认为很好的替代品。

4

3 回答 3

2

查看Swingx项目中的JXTaskPane。它已经做了你需要的。

于 2009-03-06T14:40:33.397 回答
1

在 1.5(ish) Swing 中,将一些方法路由到 、 等中的内容窗格JFrameJApplet虽然对于刚开始的人来说似乎有一些可用性优势,但它实际上并不能解决问题。所以每个人都必须处理一个行为非常奇怪的 API。所以我的建议是避免这种方法。

于 2009-03-06T14:49:10.413 回答
0

如果您有一个 Container 小部件,其中包含您要显示和隐藏的面板,为什么不按您的意愿布局您的内部面板,然后将其添加到 Container 面板,然后对 Container 使用静态方法说

JPanel p = 新 JPanel(); //用JPanel做点什么...

ContainerWidget.setContent(p);

ContainerWidget.expandPanel(p,true);

像这样的东西会起作用吗?

于 2009-03-06T14:53:24.257 回答