题
我目前正在尝试在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);
有些人会像这样工作吗?
不隶属于 StackOverflow