Index als Rückgabe von JList in einem InputDialog

Fesco

Grünschnabel
Hallo zusammen,

für eine aktuelle Aufgabe aus der Uni brauche ich einen InputDialog, der eine Liste anzeigt, die Studenten Objekte enthält. Diese bestehen aus 2 Strings und einem Integer. Um diese in der Liste anzuzeigen werden Sie in einen String umgewandelt, jedoch fehlt dann die Referenz auf das ursprüngliche Objekt aus der Liste mit den Studenten. Einzig anhand der Stelle in der Liste könnte man den Bezug wiederherstellen. Gibt es eine Möglichkeit, dass der InputDialog nicht den String, sondern die Stelle in der Liste zurückgibt, die das ausgewählte Element hat?

Kleines Beispiel zur Verdeutlichung:

Code:
Object[] liste = {"eins","zwei","drei"};
String selection = JOptionPane.showInputDialog(null,"Bitte Student wählen","exmatrikulieren..",JOptionPane.QUESTION_MESSAGE,null,liste,liste[0]);

Würde ich im Beispiel jetzt z.b. "eins" auswählen, soll als Rückgabewert 0 kommen, da es ja das erste Element im Array ist..

Ich hoffe auf ein paar Vorschläge, bin hier grad echt am verzweifeln...
Gruß
Fesco
 
Hallo,

wäre es nicht praktischer, wenn dir der InputDialog direkt das ausgewählte Student-Objekt zurückgibt. Alles andere sieht irgendwie nach Gefummel aus.

Hier mal ein kleines Beispiel:

Java:
package de.tutorials;

import javax.swing.JOptionPane;

class Student {

	private String prename, name;
	private boolean hardDrinking;

	public Student(String prename, String name, boolean hardDrinking) {
		this.prename = prename;
		this.name = name;
		this.hardDrinking = hardDrinking;
	}

	@Override
	public String toString() {
		return name + ", " + prename;
	}
}

public class StudentListExample {

	public static void main(String[] args) {
		Student[] students = new Student[]{new Student("Max", "Mustermann", true), new Student("Peter", "Maier", false)};
		Student selectedStudent = (Student) JOptionPane.showInputDialog(null, "Bitte Student wählen", "exmatrikulieren..", JOptionPane.QUESTION_MESSAGE, null, students, students[0]);
		System.out.println(selectedStudent);
	}
}

Gruß

Ben
 
Okay, das hilft! War nicht auf die Idee gekommen die "toString " zu überschreiben. Sah dann immer etwas mies aus wenn ich die Liste auf Basis der StudentenListe aufgebaut hab. Vielen Dank, damit ist jetzt alles in Ordnung :)
 
Zurück