我正试图在JTabbedPane的一个选项卡中创建一个JScrollPane。我尝试了我认为可行的方法,这就是:
pane.add("Main", mainGame);// These are my other tabs
pane.add("Upgrades", upgradeScreen); //the JTabbedPane
pane.add("Credits", creditsTab);
upgradeScreen.setLayout(null); //The null layout
lblMoney2.setBounds(10, 11, 277, 22);
upgradeScreen.add(lblMoney2); // A simple JLabel
scrollPane.add(upgradeScreen); //my JScrollPane
其中pane是我的JTabbedPane,scrollPane则是我的JScrollPane。这只是去掉了我的upgradesScreen选项卡。我有点期待,但我不知道还能做什么。如果需要更多的代码让你弄清楚,告诉我,我会把它放进去,否则,谢谢你的帮助!
不要使用JScrollPane#add
,而是要使用JScrollPane#setViewportView
查看如何使用滚动窗格的详细信息。
建议-不要使用null
布局,因为它们限制了应用程序在多个平台上运行的能力。相反,花点时间学习布局管理器如何工作
这只是去掉了我的升级屏幕标签
是的,因为任何组件都不能同时有两个父级。您先将upgradeScreen
添加到JTabbedPane
,然后再次将其添加到JScrollPane
。Component的add(Component)函数最终将调用addImpl(component)
函数:该函数将从组件的旧父级移除组件,并将其添加到新父级。
但是:
- 您需要将
JScrollPane
添加到JTabbedPane
实例中 - 要滚动的组件使用
setViewportView(component)
功能将其设置为JScrollPane
的视图对于您的上下文,它是upgradeScreen