在Swing中子类化JPanel的最佳方法

时间:2009-03-06 14:35:38

标签: java swing jpanel

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

ContainerWidget.setContent(P);

ContainerWidget.expandPanel(P,TRUE);

有些人会像这样工作吗?