我在我的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