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

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

或者我应该让嵌入式面板对外部可见,并强迫用户使用类似 ExpanderPanel.getInnerPanel()之类的东西。但是,对于 JPanel 而言,它不是替代品,我觉得这样做会很好。

有帮助吗?

解决方案

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

其他提示

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

如果你有一个Container小部件,它包含你想要显示和隐藏的面板,为什么不按照你想要的方式布局你的内部面板,然后将它添加到Container面板,然后对Container使用静态方法来说

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

ContainerWidget.setContent(P);

ContainerWidget.expandPanel(P,TRUE);

有些人会像这样工作吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top