Ich habe ein Kombinationsfeld, das Daten aus einem Array enthält. Ich möchte in der Lage sein, den ausgewählten Namen in JComboBox
zu bekommen und es in eine Textdatei zu drucken. Das Problem ist, dass der Name nicht in die Textdatei schreiben wird.Erhalten Sie ausgewählte Elemente aus Kombinationsfeld
Array Code:
public class readfiles {
String [] names = new String[15];
int i = 0;
private 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(names[i]);
i++;
}
}
//Closes the file
public void closeFile() {
readNames.close();
}
}
ComboBox Code:
//JComboBox for selecting child
JLabel selectChildName = new JLabel("Please Select Your Child:");
sPanel.add(selectChildName);
readfiles readNames = new readfiles();
readNames.openFile();
readNames.readFile();
readNames.closeFile();
JComboBox<String> selectChild = new JComboBox<String>(readNames.names);
sPanel.add(selectChild);
Und schließlich ist es das, was ich tue, um den ausgewählten Namen in eine Textdatei zu schreiben.
bw.write(selectChild.getSelectedIndex());
UPDATE
Gebraucht:
bw.write(selectChild.getSelectedItem().toString());
wollen. Übrigens wird Ihre 'readFiles' Klasse' ArrayIndexOutOfBoundsException' ausgeben, wenn die Datei 'ChildNames.txt' mehr als 15 Einträge enthält. – ArcticLord
@ArcticLord Wenn ein neuer Eintrag zur Textdatei hinzugefügt wird, wird er idealerweise zum Array hinzugefügt, selbst wenn er 15 Einträge überschreitet. aber nicht sicher? –
Nein. Ihr Array kann nur 15 Einträge speichern. Und Ihr Index erhöht sich mit jedem Namen, der gelesen wurde. Der 16. Name wird bei Index 15 gespeichert und führt zu einer Ausnahme. Vielleicht sollten Sie statt eines Arrays eine 'List' verwenden. – ArcticLord