我在我的Java应用程序中调整了一些组件的大小时遇到问题。当我调整我的主要JFrame的大小时,他们保持原来的大小,而不是填充周围的组件。调整大小JScrollPane和JTabbedPane的问题
例如我在我的程序中有另一个JTabbedPane(位于主JFrame内)的选项卡内的JTabbedPane。我使标签添加到内部JTabbedPane通过各种.setPreferredSize()填充整个周围空间。然后,当我通过拖动窗口的角来调整JFrame的大小时,外部JTabbedPane的选项卡调整得很好,但位于其中的JTabbedPane保持原来的大小。
当我用JScrollPane测试它时,会发生同样的情况:由JScrollPane调整的外部JTabbedPane保持相同大小。
下面是创建标签面板的代码,以防万一您可以看到我错过的东西。它是createEndGamePane()中的tabPane/jsp对象,而不是在调整JFrame大小时调整大小。 mainTabPane调整大小,因为它应该。
class MyFrame extends JFrame {
private JTabbedPane mainTabPane;
private JPanel endGameInfo;
//....
private void createTabbedCenterPane(){
this.mainTabPane = new JTabbedPane();
this.endGameInfo = new JPanel();
this.createEndGamePane();
this.mainTabPane.addTab("Turneringschema", null, this.scheduleHolder, "Spelschemat för turneringen");
this.mainTabPane.addTab("Grupper & Pooler", null, this.poolInfo, "Information om grupper, lag och pooler");
this.mainTabPane.addTab("Slutspelsträd", null, this.endGameInfo, "Information om slutspelen");
this.add(this.mainTabPane, BorderLayout.CENTER);
}
private void createEndGamePane(){
JTabbedPane tabPane = new JTabbedPane();
tabPane.setPreferredSize(this.endGameInfo.getSize());
for (int i = 0; i < this.tournament.data.getGroups().size(); i++) {
EndGame e = this.tournament.data.getEndGames().get(i);;
//Create the gameTree
EndGameTreeCanvas gameTree = new EndGameTreeCanvas(e, this.endGameInfo.getSize());
//Create the ScrollPane
JScrollPane jsp = new JScrollPane(gameTree);
jsp.setPreferredSize(tabPane.getSize());
jsp.setBorder(BorderFactory.createEmptyBorder());
//Add to the endGameIndo panel
tabPane.addTab(this.tournament.data.getGroups().get(i).getName(), jsp);
}
this.endGameInfo.add(tabPane);
}
}
BorderLayout.CENTER正好用于填充空间。 – 2010-03-04 21:50:20