2016-04-13 13 views
0

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()); 
+0

wollen. Übrigens wird Ihre 'readFiles' Klasse' ArrayIndexOutOfBoundsException' ausgeben, wenn die Datei 'ChildNames.txt' mehr als 15 Einträge enthält. – ArcticLord

+0

@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? –

+0

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

Antwort

0

Sie benötigen JComboBox#getSelectedItem() statt JComboBox#getSelectedIndex(). Da es sich um einen String handelt, sollte er innerhalb der Datei gedruckt werden.

Gibt das aktuell ausgewählte Element zurück.

Vergessen Sie nicht, wenn Sie das ausgewählte Element verwenden `JComboBox.getSelectedItem` und nicht` JComboBox.getSelectedIndex` bekommen zu verwenden, um auch eine ItemListener mit Ihrem JComboBox

Verwandte Themen