友人のオブジェクトのリストをリスト形式で表示する独自の GUI を構築しています。最初に遭遇した問題は、コンストラクターを使用せずにコードを実行すると、すべて正常に動作することです。しかし、GUI クラスのコンストラクターを作成すると、次のエラー メッセージが表示されます。
load: GUIapp.class is not public or has no public constructor.
java.lang.IllegalAccessException: Class sun.applet.AppletPanel can not access a member of class GUIapp with modifiers ""
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
at java.lang.Class.newInstance0(Class.java:349)
at java.lang.Class.newInstance(Class.java:308)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:807)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:714)
at sun.applet.AppletPanel.run(AppletPanel.java:368)
at java.lang.Thread.run(Thread.java:680)
私のコード:
public class GUIapp extends JApplet{
/*
* Attributes
*/
//** Friends Objects**//
private FriendsGroup a;
private ArrayList<friends> friendList;
//** PANEL **//
private JPanel outerPanel;
//** Button **//
private JButton button1;
/*
* Constructor for Getting all the friends set up
*/
private GUIapp(){
a = null; //initialize variable
try {
a = new FriendsGroup("friends.txt"); //import friend list
} catch (IOException e) {
System.out.println("Fail Import.");
}
friendList = a.getFriendsGroup(); //return an arrayList of Friends Object
}
/*
* Create Stuff
*/
public void createStuff() {
outerPanel = new JPanel(); //create outer panel
button1 = new JButton("Click Me");
outerPanel.add(button1,BorderLayout.SOUTH);
}
/*
* Initialize Stuff
*
*/
public void init(){
createStuff(); //initialize create stuff
this.add (outerPanel);
}
}
上記のコードで、コンストラクタを取り出すと、完全に動作するようです。私の質問は、コードの何が問題なのですか? 最初にデータをロードするコンストラクタを作成できないように見えるのはなぜですか?
2 番目の質問は、友人の名前のリストを表示するパネルを作成するにはどうすればよいですか? これらの名前は、コンストラクターに格納された friendList と呼ばれる友人オブジェクトの配列リストにインポートされて格納されます。
ありがとう、