0
아래 클래스의 목표는 JTabbedPane
탭 각각에 Applet
인 JFrame
을 생성하는 것입니다. 메서드가로드되는 동안 Applet
메서드가 표시되는 반면, 메서드가로드되고 반환하는 메서드는 loadPanel()
은 Box
구성 요소 (결과적으로 "로드중인 화면")를 반환합니다. load()
를 호출하지만 예상 한 스윙 구성 요소가 표시되지 않음
JFrame
표시하지만
JTabbedPane
는
Applet
로드 끝날 때까지 표시되지 않습니다. 내 머리를 건드리지 않고 무엇이 틀렸는 지 확신하지 못했다. 이 방법의 끝
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
@SuppressWarnings("serial")
public class Loaders extends JFrame {
int dimension;
int osClients;
int rs3Clients;
public Loaders(int osClients, int rs3Clients) {
this.osClients = osClients;
this.rs3Clients = rs3Clients;
this.dimension = (int) Math.sqrt(osClients + rs3Clients);
}
public void load() {
Loader[] os = new Loader[osClients];
Loader[] rs3 = new Loader[rs3Clients];
setTitle("DENCH CLIENTS");
setSize(768, 528);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBackground(new Color(0x2B2B2B));
JTabbedPane tabs = new JTabbedPane();
for(int i = 0; i < osClients; i++) {
os[i] = new Loader(Game.OSRS, i+1);
tabs.add("OS " + i, os[i].loadPanel());
}
for(int i = 0; i < rs3Clients; i++) {
rs3[i] = new Loader(Game.RS3, i+1);
tabs.add("RS3 " + i, rs3[i].loadPanel());
}
add(tabs);
tabs.setVisible(true);
setVisible(true);
for(Loader l : os) {
System.out.println(l.getWorld());
int index = tabs.indexOfTabComponent(l.getBox());
tabs.setComponentAt(index, l.loadGame());
}
for(Loader l : rs3) {
int index = tabs.indexOfTabComponent(l.getBox());
tabs.setComponentAt(index, l.loadGame());
}
}
}
프레임이 보이기 전에 구성 요소를 프레임에 추가해야합니다. – camickr
@camickr 음 ... 그들은 ...? –
더 나은 도움을 받으려면 [MCVE] 또는 [Short, Self Contained, Correct Example] (http://www.sscce.org/)를 게시하십시오. * "음 ... 그들은 ...?"어떤 것은 그렇지, 다른 것은 그렇지 않았습니다. @camickr의 의미는 *** 프레임을 표시하기 전에 구성 요소를 모두 추가해야한다는 것입니다. 그리고 set visible을 호출하기 직전에'pack()'을 호출하십시오. –