Kommandozeile

Status
Nicht offen für weitere Antworten.
M

Markusa

Gast
Also bin ein Swing neuling.

Also was ich machen möchte ist eine Einfache Benutzereingabe mit einen Bild darüber.

Ich habe immer so Programmiert das die Benutzereingabe im Fenster ließt mit Bufferedreader etc.

Habe auch eine "aufwendige" Klasse dafür wär daher gut wenn ich es gleich verbinden könnte und
es nicht neu Programmieren müßte.

Hoffe die Frage ist verständlich.

Mfg Markus
 

L-ectron-X

Gesperrter Benutzer
Ähm, ja was nun? Wobei brauchst du nun Hilfe? Konkretisiere doch mal.
Benutzereingabe mit Bild darüber...
...in der Konsole? ???:L
 

Sky

Top Contributor
Anonymous hat gesagt.:
Also was ich machen möchte ist eine Einfache Benutzereingabe mit einen Bild darüber.
Verstehe ich nicht.

Anonymous hat gesagt.:
Ich habe immer so Programmiert das die Benutzereingabe im Fenster ließt mit Bufferedreader etc.
Das geht natürlich nicht mehr. Guck Dir mal die Klasse JOptionPane an.

Anonymous hat gesagt.:
Habe auch eine "aufwendige" Klasse dafür wär daher gut wenn ich es gleich verbinden könnte und
es nicht neu Programmieren müßte.
Soll ich jetzt raten, was in deiner Klasse steht, um Dir die Frage zu beantworten????
 
M

Markusa

Gast
Also zunächst die Klasse die in der Konsole einlesen kann(es sind Methoden vorhanden die mit anderen verbunden
sind aber dies ist nebensache).

Was ich jewtzt machen möchte ist dies in ein Swing einzubinden, also nicht das ich in die Konsole schreiben soll also Benutzer sonden in die Swing Oberfläche. Wenn ich das hinkriegen würde wär ich schon mal froh, weiterhin
möchte ich auch auf der Oberfläche(Swing) ein Bild Laden können.

Bei einer Eingabe wird reagiert, bei eingabe von Schaue wird z.B. erklärt was in einem Raum ist(steht nicht in diesem Quellcode) bei Eingabe von gehe nach Norden wird z.B. der nächste Raum geladen dabei möchte ich das auch ein neues Bild für den Raum geladen wird.

Hoffe nun ist es verständlich, hier der Quellcode der eingabe in die Konsole:


Code:
import java.io.*;
import java.util.*;

public class EingabeParser {
    
    /** Creates a new instance of EingabeParser */
    public EingabeParser() {
    }

    
    public static void Eingabe(){
         BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
         String eingabeZeile;
         
         try {
            System.out.println("Was moechten sie tun?");

            // Eine Eingabezeile lesen (RETURN beendet 
            // die Zeile)
            eingabeZeile = eingabe.readLine();

            // Die eingegebenen Werte in Einzelstrings 
            // (Tokens) zerlegen
            StringTokenizer tokens = new StringTokenizer(eingabeZeile);
  
            String Anweisung = tokens.nextToken();//Lese String
            EingabeÜberprüfung(Anweisung, tokens);
            
        }
        catch(IOException e) {
            System.out.println("Fehler bei der Eingabe!");
			System.out.println("");
			Eingabe();
        }

        catch(NoSuchElementException e) {
            System.out.println("Versuchen sie es noch einmal");
			System.out.println("");
            Eingabe();
        }
    }


//Hier soll auf die Eingabe reagiert werden, z.B. den nächsten Raum betreten    
    public static void EingabeÜberprüfung(String Eingabe, StringTokenizer EingabeToken){
        if (Eingabe.equals("Schau")) Person.Schau();
        if (Eingabe.equals("Gehe")) {
            String Richtung = EingabeToken.nextToken();
			Person.Go(Richtung);
        }
        if (Eingabe.equals("Exit")) System.exit(0);
        Eingabe();
    }

}


Edit von L-ectron-X: Codetags eingefügt.
 

Anselmus

Bekanntes Mitglied
brauchst in gui keinen bufferedreader...

kannst die eingabe zb in einem JTextField machen oder wenn du ne begrenzte anzahl von "anweisungen hast" kannst sie auch in ne JComboBox packen...
 

mic_checker

Top Contributor
bitte schreib deinen Code doch nächstens auch in Code-Tags...außerdem werden Variablennamen klein geschrieben...

Kannst ja noch nen ActionListener verwenden, bei dem du den eingetippten String an die Methode übergibst, btw. Methoden werden klein geschrieben ;)
 
M

Markusa

Gast
Kann JTextfield dann auch einen AusgabeText ausgeben auf die Reaktion der Eingabe?
 

mic_checker

Top Contributor
Du liest den Text ein, führst die Aktion aus, wegen meiner das nächste Bild laden, dann kannst du ja auch den Text vom JTextField ändern.
 
M

Markusa

Gast
Ich schein ein bißchen langsam zu verstehen.
Also im meinem Textarea habe ich jetzt in der ersten die Frage:
1. Was möchten sie tun?

In der zweiten zeile möchte ich jetzt den Text einlesen lassen und in ein String Speichern// und hier komme ich jetzt nicht weiter
 

Anselmus

Bekanntes Mitglied
Markusa hat gesagt.:
Ich schein ein bißchen langsam zu verstehen.

vielleicht erklärst du dein problem auch ein bißchen langsam... :wink:

mußt du wohlne nen ActionListener schreiben der den Inhalt des TextFields in den String kopiert...

Code:
String str = einTextFeld.getText()
 
M

Markusa

Gast
Tut mir leid habe bischer meine Fähigkeitej zu hoch eijgeshätzt.

Bin im 2.Semester und muß ein Multitiplayer Dandeon krearien, also ein Mud.

Muß zu geben das ich ein bißchen(oder sehr) generct bin weil ich es einfach nicht hinkriege. Ein Erfolg lößt schon freude aus aber versuche hier mit dieser Hilfe. Schreibe hier meine class:

man muß sie nicht berücksichtigen aber tut für das verständnis gut was ich möcht.

Hab mir gedanken gemcht wegen meiner letzten frsge, es würde mir ja nix bringen wenn ich die 2. Zeile einlesen würde weil ich auf die Reaktion auf die 2. Zeile (derBenutzereingabe) weitere Information ) bekomme und dann in eine Zeile(als Benutzer) etwas Eineben würde die unbekannt ist.


Also ich hoffe jemnad kann mir helfen.

Mein Ziel ist es eigentlich nur das Standard KommandoFenster durch dieses "Layout" zu ersetzen, also in Oberfläxhe zu schaffen.

Bin frustriert und habe mich beim Programmieren für fortgeschritenerg ehalten, aber vielleicht könnt ihr mirja helfen.
 
M

Markusa

Gast
Code:
package mud;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Layout extends JFrame{			

        boolean inAnApplet = true;
        String text0;
        String text= "Was möchten sie tun?";
		String antwort="Guten Tag";
		int line;
	    int Zeilen = 4 , Spalten = 1; 
	    public Layout() {
	        Container contentPane = getContentPane();
	   
	        JTextArea ausgabe = new JTextArea(text0,Zeilen,Spalten) ;
	        add(new JScrollPane(tx));
	       
	        
	        
	        
	        contentPane.add(ausgabe,BorderLayout.SOUTH);
            
	        //int ausgabe.getLineStartOffset( line);




	       /* if (text.equals("Hallo")){
	        	
	        	tx.append(antwort);
              }*/
	        
           addWindowListener(new WindowAdapter() {
	            public void windowClosing(WindowEvent e) {
	                if (inAnApplet) {
	                    dispose();
	                } else {
	                    System.exit(0);
	                }
	            }
            });
        }


	    

	    public static void main(String args[]) {
	        Layout window = new Layout();
	        window.inAnApplet = false;

	        window.setTitle("BorderLayout");
	        window.pack();
	        window.setVisible(true);
	    }
	}
 

mic_checker

Top Contributor
Also hast du probleme mit der GUI? Weisst du nicht welche Elemente du verwenden müsstest um das zu erreichen was du willst oder tutst du dich mti Layout Managern schwer?

Du solltest deine Variablen oben noch private machen....
 
M

Markusa

Gast
Also erst mal danke für das private.

In disem Bereich möchte ich den Text des Benutzers einlesen lassen und darauf reagieren, das kann ich nicht:


Code:
          JTextArea ausgabe = new JTextArea(text0,Zeilen,Spalten) ; 
           add(new JScrollPane(tx)); 
           
           
           
           
           contentPane.add(ausgabe,BorderLayout.SOUTH); 
            
           //int ausgabe.getLineStartOffset( line);   // das ist            wahrscheinlich nicht korrekt
         



          /* if (text.equals("Hallo")){ 
               
              tx.append(antwort); 
              }*/ 
           
           addWindowListener(new WindowAdapter() { 
               public void windowClosing(WindowEvent e) { 
                   if (inAnApplet) { 
                       dispose(); 
                   } else { 
                       System.exit(0); 
                   } 
               } 
            }); 
        }

[Edit by Beni: Codetags]
 

mic_checker

Top Contributor
Du brauchst ja noch nen ActionListener, in diesem holst du dir dann mit getText() den Text, schaust dann was eingegeben wurde und reagierst entsprechend drauf.

Probier dich mal am ActionListener, bei Problemen helfen wir gerne weiter.
 
M

Markusa

Gast
Habs geschafft :) Danke

Aber vielleiocht könnt ihr mir ja noch hierbei helfen:

public void EingabeÜberprüfung(String Eingabe){
if (Eingabe.equals("Schau")) {
//Fügt Text in die Ausgabe ein
ausgabe.appendText(Person.Schau());

Also ausgabe ist bei mir die TextArea(nicht JTextArea)
und hier möchte ich durch appendText Informationen ausgeben
, mit einem String klappt das ja ohne Problem, ich bin aber gezwungen mit einer Methode mehrere Strings zu laden und das Klappt nicht.

Gibt's da nicht eine Möglichkeit dieses zu meistern?
 

mic_checker

Top Contributor
Versteh gerade dein Problem nicht so ganz ehrlich gesagt.

Meinst du das du auf mehrere Strings überprüfen musst oder was genau meinst du?
 
M

Markusa

Gast
Hallo, habe ein neues Problem will ein Bild ins BorderLayout hizufügen mit :

add (jpg = new Image(),BorderLayout.NORTH);

aber das klappt nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Kommandozeile AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben