0
JTabbedPane
タブのそれぞれにApplet
のJFrame
を作成することです。メソッドloadPanel()
はBox
コンポーネント(Applet
がロードされている間に表示されることになっていたと思われる「読み込み画面」)を返しますが、loadGame()
メソッドはApplet
をロードして返します。予想されたときにスイングコンポーネントが表示されない
load()
が呼び出された場合、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]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 * "彼らは... ..." *いくつかは、他の人はそうではなかった。 @camickrが意味していたのは、フレームを表示する前にコンポーネントを追加する必要があります。 set visibleを呼び出す直前に、 'pack()'を呼び出します。 –