0

我正在尝试在我的 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

其中窗格是我的 JTabbedPane,而 scrollPane 是我的 JScrollPane。这只是摆脱了我的 upgradesScreen 选项卡。我有点预料到这一点,但我不知道还能做什么。如果您需要更多代码来弄清楚它,请告诉我,我会把它放进去,否则,感谢您的帮助!

4

2 回答 2

2

这只是摆脱了我的 upgradesScreen 选项卡。

是的,因为没有一个组件可以同时拥有两个父级。您先添加upgradeScreenJTabbedPane,然后再次将其添加到JScrollPane. 组件的 add(component) 函数最终将调用该addImpl(component)函数:该函数将从其旧父级中删除该组件并将其添加到新父级。

然而:

  1. 您需要将其添加JScrollPaneJTabbedPane实例中。
  2. 您希望滚动的组件将其设置为JScrollPane使用该setViewportView(component)功能的视图。对于您的上下文,它是upgradeScreen
于 2013-12-08T09:31:57.590 回答
2

Don't us JScrollPane#add, instead you want to use JScrollPane#setViewportView

Check out How to use ScrollPane more details.

Advise- Don't use null layouts, they limit the ability for your application to run on multiple platforms. Instead take the time to learn how layout managers work

于 2013-12-08T09:30:07.477 回答