我正在尝试在其中一个选项卡中创建一个JScrollPane到我的JTabbedPane。我尝试了我会做的事情,这就是:
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
哪个窗格是我的JTabbedPane,scrollPane是我的JScrollPane。这简直就是摆脱了我的升级屏幕标签。我有点期待,但我不知道还能做什么。如果你需要更多的代码来解决它,告诉我,我会把它放进去,否则,谢谢你的帮助!
答案 0 :(得分:2)
不要我们JScrollPane#add
,而是要使用JScrollPane#setViewportView
查看How to use ScrollPane更多详情。
建议 - 不要使用null
布局,它们限制了应用程序在多个平台上运行的能力。而是花时间学习布局管理器的工作方式
答案 1 :(得分:2)
是的,因为没有任何组件可以同时拥有两个父母。您先将这只是摆脱了我的升级屏幕标签。'
upgradeScreen
添加到JTabbedPane
,然后再将其添加到JScrollPane
。 Component的add(component)函数最终将调用addImpl(component)
函数:这将从其旧父项中删除该组件并将其添加到新父项。
<强>然而强>
JScrollPane
添加到JTabbedPane
实例。JScrollPane
功能将其设置为setViewportView(component)
的视图。 对于您的上下文,它是upgradeScreen