如何在JTabbedPane中创建JScrollPane?

时间:2013-12-08 09:21:58

标签: java swing jscrollpane jtabbedpane jviewport

我正在尝试在其中一个选项卡中创建一个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。这简直就是摆脱了我的升级屏幕标签。我有点期待,但我不知道还能做什么。如果你需要更多的代码来解决它,告诉我,我会把它放进去,否则,谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

不要我们JScrollPane#add,而是要使用JScrollPane#setViewportView

查看How to use ScrollPane更多详情。

建议 - 不要使用null布局,它们限制了应用程序在多个平台上运行的能力。而是花时间学习布局管理器的工作方式

答案 1 :(得分:2)

  

这只是摆脱了我的升级屏幕标签。'

是的,因为没有任何组件可以同时拥有两个父母。您先将upgradeScreen添加到JTabbedPane,然后再将其添加到JScrollPane。 Component的add(component)函数最终将调用addImpl(component)函数:这将从其旧父项中删除该组件并将其添加到新父项。

<强>然而

  1. 您需要将JScrollPane添加到JTabbedPane实例。
  2. 您要滚动的组件使用JScrollPane功能将其设置为setViewportView(component)的视图。 对于您的上下文,它是upgradeScreen