私は2つのクラスを持っています.1つはファイル内のテキストを読み込み、データを配列に入れ、メインクラスに配列の内容をJComboBox
に追加したいクラスです。しかし、私は "変数に解決することはできません"というエラーが表示されています。JComboBoxに配列の内容を表示する
readfiles.java
public class readfiles {
String [] names = new String[15];
int i = 0;
public Scanner readNames;
//Opens the file
public void openFile() {
try {
readNames = new Scanner(new File("ChildName.txt"));
} catch (Exception e) {
System.out.println("Could not locate the data file!");
}
}
//Reads the names in the file
public void readFile() {
while(readNames.hasNext()) {
names[i] = readNames.next();
System.out.println(Arrays.toString(names));
System.out.println(names[i]);
i++;
}
}
//Closes the file
public void closeFile() {
readNames.close();
}
}
Main.java
//JComboBox for selecting child
JLabel selectChildName = new JLabel("Please Select Your Child:");
sPanel.add(selectChildName);
JComboBox<String> selectChild = new JComboBox<String>(names); // (names); is the error, cannot be resolved to a variable
sPanel.add(selectChild);
'名前'は 'readFiles'クラスのみにコンテンツを持っていますので、' Main'クラスがそれを参照するための何らかの方法、例えばゲッターなどが必要です。 「Java TMプログラミング言語のためのコード表記規則」(http://www.oracle.com/technetwork/java/codeconvtoc-136057.html)を読んでみると、読者が読んだほうが簡単になりますコードを読んで他の人を読む – MadProgrammer
あなたはこの質問をもう一度尋ねるのは悔しいことです。参照:http://stackoverflow.com/questions/36552223/adding-data-to-a-jcomboboxこれを行うために配列を使うのは良い解決策ではありません。ファイルから読み込むときに配列をどのくらい大きくするか分からないので、このような目的で配列を使用することは決して良い考えではありません。乱数を選ぶことは、柔軟な設計ではありません。そのため、アイテムをコンボボックスに直接追加するソリューションが提供されました。コンボボックスをreadFile()メソッドに渡し、addItem()メソッドを使用するだけです。または、ロードされたコンボボックスを返すこともできます。 – camickr
また、これはスペースの無駄です。コンボボックスを作成すると、配列内の項目がArrayからDefaultComboBoxModelにコピーされます。アイテムをコンボボックスに直接ロードすると、それらはモデルに追加されたばかりです。 – camickr