JOptionPane

student26

Mitglied
Hallo Leute,
ich hab hier ein Programm geschrieben, aber ich komm jetzt nicht weiter mit JOptionPane. Wie kann ich das hier einfügen? Also das Programm soll auf Tastatureingabe reagieren. Ich hab zwar oben JOptionPane hingeschrieben, aber wie ich das definieren muss, weiss ich nicht. Normalerweise muss ein Fenster öffnen, aber tut es nicht. Deshalb möchte ich scanner loswerden und dafür JOptionPane einfüge. Da brauche ich Hilfe.
[JAVA=42]import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;

public class Versuch8 {
private static List<Zufallszitat> zitate = new LinkedList<Zufallszitat>();

private static void readData() throws IOException {
String zeile;
BufferedReader buffRead = new BufferedReader(new FileReader("zitate.xml"));
String name = null;
String beschreibung = null;
String zitat = null;

while ((zeile = buffRead.readLine()) != null) {
if (zeile.contains("<zitat>")) {
zitat = zeile.substring(11, (zeile.length() - 8));
}

else if (zeile.contains("<name>")) {
name = zeile.substring(10, (zeile.length() - 7));
}

else if (zeile.contains("<beschreibung>")) {
beschreibung = zeile.substring(18, (zeile.length() - 15));
zitate.add(new Zufallszitat(name, beschreibung, zitat));
}
}
}

public static void main(String args[]) {
try {
readData();
} catch (IOException e) {
e.printStackTrace();
}

// Benutzereingabe lesen

Scanner scanner = new Scanner(System.in);
List<Integer> nrs = new LinkedList<Integer>();

while (scanner.hasNextInt()) {
int nr = scanner.nextInt();
nrs.add(nr);

if (nr == 5000) {
break;
} else {
Zufallszitat zitat = zitate.get(nr);
System.out.println(zitat);
}
}

System.out.println(nrs);
System.out.println("ENDE");
}
[/code]
 
Zuletzt bearbeitet:
- while schleife durch ne do-while ersetzen (weil schöner)
-
Code:
int nr = scanner.nextInt();
ersetzten durch ne JOptionPane
 
Soll denn die komplette Eingabe und Ausgabe über eine JOptionPane laufen?
Ich würde aus der while Schleife eine do while Schleife machen. In der Schleife einen InputDialog anzeigen und den Wert auslesen ... der Abbruch ist abhängig vom eingegebenen Wert.
 
Klammersetzung passt. Hätte jetzt erwartet bzgl des Rückgabewerts kommt.
showInputDialog gibt einen String zurück, der erst in ein int umgewandelt werden muss, bevor man diesen der nr zuweisen kann.
 
Den Link hast du dir nicht angeschaut oder?
Java:
String input = JOptionPane.showInputDialog("...");
int nr = Integer.parseInt(input);
 
Wenns über die Konsole gehen soll, dann funktioniert dein Code ausm ersten Posting.
Wenns über ein JOptionPane gehen soll, dann steht der Codeschnipsel 4 Posts über diesem.
 
Zuletzt bearbeitet von einem Moderator:
Guten Morgen,

ich finde es immer ziemlich komisch, das JOption Panes für alles missbraucht wird. Dazu gibt es doch JDialog, mit dem man so einiges mehr machen kann, und man kann diesen auch modal setzen.

Daher einfach dort ein Textfeld adden, den wert holen und in int parsen.

Java:
JTextField textfield = new JTextField(10);
dialog.add(textfield);
Java:
String text = textfield.getText();
int zahl = Integer.parseInt(text);

grüße spin


JOptionPane benutzt man doch nur als Hinweis Fenster und nicht für Große Eingaben. Semantisch gesehen ist das auch viel Sinnvoller.!
 
Dafür sind Kenntnisse in der GUI Entwicklung notwendig. Weiss nicht, ob Du Dir das antun willst ;-)

Ich würde das grundsätzlich als reine Konsolenapplikation belassen. Wenn man aber die Eingabe über eine JOptionPane machen will, muss man prinzipiell überall wo bisher die Eingabe über den Scanner eingelesen wird, die Eingabe mit der JOptionPane einlesen. Wie, hat EikeB ja bereits gepostet.
 
Leute, ich muss das heute fertig haben. Ist denn niemand da, der mir wirklich helfen kann. Ich verstehe das alles nicht. Warum öffnet sich hier kein Fenster, wo ich eine Zahl eingeben kann und die Zahl mir das entsprechende Zitat mit dieser Nr zurückgibt.
 
Das richtige in deinen Quelltext. Mal im ernst, man könnte auch von allein auf die Idee kommen den aktuellen Code zu zeigen wenn man schon nach genauen Stellen fragt und von irgendwelchen Fehlern spricht.
 
Ich bin einfach mal so frei, fragt mich nich warum...
Java:
		// Benutzereingabe lesen
		List<Integer> nrs = new LinkedList<Integer>();
		int nr = -1;
		do {
			try {
				String input = JOptionPane.showInputDialog("Zahl eingeben");
				nr = Integer.parseInt(input);
				
				nrs.add(nr);
				
				if (nr != 5000) {
					Zufallszitat zitat = zitate.get(nr);
					JOptionPane.showMessageDialog(null, zitat);
				}
			} catch (NumberFormatException nfe) {
				nr = 5000;
			}
		} while (nr != 5000);
		
		System.out.println(nrs);
		System.out.println("ENDE");
 
Leute, bitte hilft mir. Ich hab nur noch zwei Stunden. Wenn ich das nicht hab, dann bekomme ich das Testat nicht. dann muss ich nochmal ein Jahr warten.
 
Du hast doch jetzt 2 Funktionsfähige versionen (IO per Konsole + IO per JOptionPane) bekommen, was wollst du denn noch? :bae:
 

Zurück
Oben