Java 응용 프로그램에서 일부 구성 요소의 크기를 조정하는 데 문제가 있습니다. 메인 JFrame의 크기를 조정할 때 주변 구성 요소를 채우지 않고 이전 크기로 유지합니다.JScrollPane 및 JTabbedPane 크기 조정 문제
예를 들어, 내 프로그램에 JTabbedPane (다른 JTabbedPane의 탭 (기본 JFrame 내에 있음)) 내에있는 JTabbedPane이 있습니다. 나는 탭을 내부 JTabbedPane에 추가하여 다양한 .setPreferredSize()를 통해 전체 주변 공간을 채 웁니다. 그리고 나서 창 모서리를 드래그하여 JFrame의 크기를 조정하면 바깥 쪽 JTabbedPane의 탭이 잘 조정되지만 그 안에있는 JTabbedPane은 동일한 이전 크기로 유지됩니다.
JScrollPane으로 테스트 할 때와 동일한 일이 발생합니다. JScrollPane에 의해 바뀐 외부 JTabbedPane은 같은 크기를 유지합니다.
다음은 내가 놓친 명백한 것을 볼 수 있도록 탭 패널을 만드는 코드입니다. JFrame의 크기를 조정할 때 크기를 변경하지 않는 것보다 createEndGamePane()의 tabPane/jsp 객체입니다. 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는 공간을 채우기 위해 사용됩니다. –