Tastatureingaben in jTextFields

tbone89

Mitglied
Hallo!
Ich arbeite gerade an einem GUI für ein Programm das Strings verschlüsseln und entschlüsseln soll.
Der Ver- und Entschlüsselungsalgoritmus ist fertig und funktioniert schon ganz gut. Jetzt will ich das Programm erweitern in dem der Benutzer über ein GUI mit einem Textfeld sein zu verschlüsselndes Wort eingeben kann. Mit meinem Code der unten aufgeführt ist komme ich so weit dass ein Wort in einen String (String string in der Klasse actionPerformed) gespeichert wird das in das Textfeld eingegeben wurde. Habe schon so einiges probiert diesen String zu "isolieren" bzw. mit dem Wert der dieser String erhält (sprich die Benutzereingabe) zu arbeiten. Das einzige was ich geschafft habe ist diesen String durch eine MessageBox auszugeben. Einen getter getString() zu implementieren ist ja leider nicht möglich, da die Klasse TheHandler den ActionListener als Interface benutzt und desshalb keine weiteren Methoden in der Klasse hinzuzufügen sind.
Mein Ziel ist es diese Benutzereingabe in eine "globale" Variable zu speichern, die ich dann als Eingangsvariable für meine Verschlüsselungsmethode benutzen kann.
Wäre toll wenn jemand eine Lösung für mich hätte! Danke im Vorraus.. Gruß t

------------------------------------------------------------------------------------------------
Java:
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

public class Grafik extends JFrame{
	
	JTextField tf1;
	JTextField tf2;
	JLabel l1;
	JLabel l2;
	
	public Grafik(){
		
		super("moCrypt");
		setLayout(new FlowLayout());
		
		l1 = new JLabel("Verschlüsselter Text: ");
		l1.setToolTipText("");
		add(l1);
		
		tf1 = new JTextField(15);
		add(tf1);
		
		l2 = new JLabel("Entschlüsselter Text: ");
		add(l2);
		
		tf2 = new JTextField(15);
		add(tf2);
		
		TheHandler handler = new TheHandler();
		
		tf1.addActionListener(handler);
		tf2.addActionListener(handler);
			
	}
	
	public class TheHandler implements ActionListener{
			
		public void actionPerformed(ActionEvent event){
				
			String string = event.getActionCommand();
			JOptionPane.showMessageDialog(null, "Eingegebenes Wort: " + string);
		}
	}

}
 
T

Tomate_Salat

Gast
[c]getActionCommand[/c] gibt nicht den Text zurück!

Hier ein kleines Beispiel:

Java:
public class Exampel
	extends JFrame
{
	private JTextField text;	
	
	public Exampel()
	{
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		text	= new JTextField("THE TEXT");
		text.setActionCommand("THE COMMAND!");
		
		text.addActionListener(handler);
		
		add(text);
	}
	
	private ActionListener handler	= new ActionListener()
	{
		@Override
		public void actionPerformed(ActionEvent e)
		{
			System.out.println(e.getActionCommand()); 					// Ausgabe: THE COMMAND!
			System.out.println(text.getText());		  					// Ausgabe: THE TEXT
			System.out.println(((JTextField)e.getSource()).getText());  // Ausgabe: THE TEXT
		}
	};
}

MFG

Tomate_Salat
 

eRaaaa

Top Contributor
[c]getActionCommand[/c] gibt nicht den Text zurück!

Hier ein kleines Beispiel:

Java:
public class Exampel
	extends JFrame
{
	private JTextField text;	
	
	public Exampel()
	{
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		text	= new JTextField("THE TEXT");
		text.setActionCommand("THE COMMAND!");
		
		text.addActionListener(handler);
		
		add(text);
	}
	
	private ActionListener handler	= new ActionListener()
	{
		@Override
		public void actionPerformed(ActionEvent e)
		{
			System.out.println(e.getActionCommand()); 					// Ausgabe: THE COMMAND!
			System.out.println(text.getText());		  					// Ausgabe: THE TEXT
			System.out.println(((JTextField)e.getSource()).getText());  // Ausgabe: THE TEXT
		}
	};
}

MFG

Tomate_Salat

Lasse mal in deinem Code die Zeile 11 weg....:lol:
Java:
 ActionEvent e =
            new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
                            (command != null) ? command : getText(),
                            EventQueue.getMostRecentEventTime(), modifiers);
(JTextField)
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
Wieso? Die ist zur verdeutlichung da. Wenn ich die weg lasse, kann ich auch z23 weglassen :-/

Edit Aha, auch interessant. Würde dann aber trotzdem nicht meinen Text darüber abfragen...
 
T

Tomate_Salat

Gast
ach ja:
Java:
public class Exampel
	extends JFrame
{
	private JTextField 	text;	
	private String		eingabe;
     
	// ... hier steht iwelcher code

	private ActionListener handler	= new ActionListener()
	{
		@Override
		public void actionPerformed(ActionEvent e)
		{
			String value	= text.getText();
			this.eingabe			= behandleIrgendwieDieEingabe(value);
		}
	};
        // .... und hier steht iwelcher code
}

du kannst die Eingabe z.B in der Klasse speichern.
 

tbone89

Mitglied
hey erstmal danke an euch für die Antworten, leider muss ich sagen dass ich dadurch nicht wirklich weiter gekommen bin... Habe alle vorgeschlagenen Wege ausprobiert, leider ohne Erfolg :(

Mein Ziel ist es einfach dass der Benutzer des Programms ein Wort in das TextField eingibt, welches dann verschlüsselt in einem weiteren TextField ausgegeben wird. Mein Problem liegt alleine darin mit dem vom User eingegebenen Wort zu "arbeiten" bzw. dieses in meinen Verschlüsselungsalgorithmus zu schicken... Hab schon alles mögliche probiert, aber komme einfach nicht weiter :noe:

Vllt. kann mir ja jemand einen konkreten Lösungsvorschlag machen, ich dank euch im Vorraus für die Mühe!

Mfg

Java:
public class GUI extends JFrame{
	
    private JTextField  text;   
    private String      eingabe = "test";		// Eingangsparameter für Encrypt-Methode --> dort soll die TextField Eingabe gespeichert werden, aber wie???
	     
    public GUI(){
	    	
    	super("Beispiel");
		setLayout(new FlowLayout());
			
		text = new JTextField(15);
		text.getInputContext();
		add(text);
		text.setText(eingabe);
				
		text.addActionListener(handler);
	}
    
    void anzeigen(){
    	System.out.println(eingabe);		// test wird ausgegeben... will hier aber die Eingabe des Textfeldes haben (wie weiter unten)
    }
           
   private ActionListener handler  = new ActionListener(){
		   
	   public void actionPerformed(ActionEvent e){

		   eingabe = text.getText();
		   System.out.println(eingabe); 	// Eingegebener Text wird in der Konsole ausgegeben
		   									// so weit so gut, doch wie kann ich diesen Text jetzt in der Klasse GUI benutzen???
		   
		   									// Dieser Text soll als Eingangsparameter für meine Encrypt-Methode verwendet werden
       }
   };

}
 

ProgX

Aktives Mitglied
Mir war etwas fad!

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

@SuppressWarnings("serial")
public class GUI extends JFrame{
	
	private JTextArea jTextArea;
	private JButton jButton;
	
	public GUI(){
		super();
		this.setSize(500,500);
		this.setLocation(100,100);
		this.setDefaultCloseOperation(3);
		this.setTitle("Verschlüsselung");
		this.setLayout(null);
		
		jTextArea = new JTextArea();
		jTextArea.setLocation(0,0);
		jTextArea.setSize(this.getWidth(),400);
		this.add(jTextArea);
		
		jButton = new JButton();
		jButton.setLocation(170,420);
		jButton.setSize(160,25);
		jButton.setText("Verschlüsseln");
		jButton.setVisible(true);
		jButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				jTextArea.setText(verschluesseln());
			}
		});
		this.add(jButton);
		
		this.setVisible(true);
	}
	
	private String verschluesseln(){
		return this.jTextArea.getText();
		//Hier einfach den Algorythmus als return implementieren, nachdem du verschlüsseln möchtest
	}
	
}

dann in der main einfach ein Objekt mit der Klasse erstellen und in Zeile 42 der Klasse GUI anstatt des normalen Textes den Verschlüsselungsalgorythmus eingeben! Der Button beginnt die Verschlüsselung!
Ist zwar nicht sehr schön, aber für 5 Minuten nicht so schlecht! ;-)
 

tbone89

Mitglied
Hallo!
Danke für die Vorschläge, habe es jetzt endlich geschafft. War alles einfacher als ich dachte, die Methode actionPerformed reagiert bei Textfields automatisch auf die Enter-Taste und führt die gewünschte Operation aus. Hab hier nochmal den Code angefügt, falls es jemanden interessiert!
Vielen dank nochmal für die Mühe! Gruß t

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JLabel;
 
@SuppressWarnings("serial")
public class Grafik extends JFrame{
	
	String text;
	char[] array;
	int i = 0;
    
    private JTextField tf1;
    private JTextField tf2;
    private JLabel lb1;
    private JLabel lb2;
    
    public Grafik(){
        super();
        this.setSize(500,70);
        this.setLocation(100,100);
        this.setDefaultCloseOperation(3);
        this.setTitle("Verschlüsselung");
        this.setLayout(null);
  
        tf1 = new JTextField();
        tf1.setLocation(170,12);
        tf1.setSize((this.getWidth()-55),20);
        this.add(tf1);
        
        tf2 = new JTextField();
        tf2.setLocation(170,52);
        tf2.setSize((this.getWidth()-55),20);
        tf2.setVisible(true);
        this.add(tf2);
                
        lb1 = new JLabel();
        lb1.setText("Verschlüsselt: ");
        lb1.setSize(200,20);
        lb1.setLocation(10,10);
        lb1.setVisible(true);
        this.add(lb1);
        
        lb2 = new JLabel();
        lb2.setText("Entschlüsselt: ");
        lb2.setSize(200,20);
        lb2.setLocation(10,50);
        lb2.setVisible(true);
        this.add(lb2);
        
          
        tf1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                tf2.setText(verschluesseln());
            }
        });
        
        tf2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                tf1.setText(entschluesseln());
            }
        });
               

    }
    
    public String verschluesseln(){
    	text = tf1.getText();
    	array = text.toCharArray();
    	encrypt();
    	    	
    	return text;
    }
    
    public String entschluesseln(){
    	text = tf2.getText();
    	array = text.toCharArray();
    	decrypt();
    	
    	return text;
    }
    
    String encrypt(){.....}
	
    String decrypt(){.....}

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Swing Keine Reaktion auf Tastatureingaben bei mehreren Buttons??? AWT, Swing, JavaFX & SWT 4
M Zeitkritisches auslesen von Tastatureingaben AWT, Swing, JavaFX & SWT 6
K Tastatureingaben abfangen AWT, Swing, JavaFX & SWT 25
pinerski Swing JList Tastatureingaben abfangen AWT, Swing, JavaFX & SWT 2
D Swing Tastatureingaben anzeigen AWT, Swing, JavaFX & SWT 6
R Programmweite Shortcuts, Tastatureingaben AWT, Swing, JavaFX & SWT 11
raeuchertofu Input bei zwei jTextfields AWT, Swing, JavaFX & SWT 5
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
D JComboBox Strings aus JTextFields zuordnen AWT, Swing, JavaFX & SWT 2
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
C Swing Durch Inhaltsänderung eines JTextfields eine Funktion aufrufen AWT, Swing, JavaFX & SWT 5
J jTextFields ausrichten AWT, Swing, JavaFX & SWT 5
B Unendlich vielen JTextFields Namen zuweisen AWT, Swing, JavaFX & SWT 8
J Swing JButton durch Eingabe von Zahlen in JTextFields aktivieren AWT, Swing, JavaFX & SWT 3
X jTextFields dynamisch initialisieren AWT, Swing, JavaFX & SWT 2
A JTextfields unveränderbar stellen AWT, Swing, JavaFX & SWT 3
L Swing Input Focus eines JTextFields in einer JList AWT, Swing, JavaFX & SWT 2
K mehrere JTextFields - wie finde ich die Cursor-Position? AWT, Swing, JavaFX & SWT 5
C Swing JTable Datenimport von JTextFields AWT, Swing, JavaFX & SWT 27
P Fehler beim Einlesen eines JTextFields AWT, Swing, JavaFX & SWT 2
J Zugriff auf "dynamisch erzeugte" JTextFields AWT, Swing, JavaFX & SWT 2
spacegaier NullPointer beim Auslesen eines JTextFields AWT, Swing, JavaFX & SWT 7
loadbrain JTextFields & java.lang.NullPointerException AWT, Swing, JavaFX & SWT 2
C Ändern eines JTextFields bei DocumentListener Event AWT, Swing, JavaFX & SWT 2
S Namen von automatisch erzeugten JTextFields herausfinden… AWT, Swing, JavaFX & SWT 4
D JTextFields in Vektor: index auslesen AWT, Swing, JavaFX & SWT 10
A Wie JTextFields über Document disablen? AWT, Swing, JavaFX & SWT 3
R JTextFields mit Return statt Tab anwählen AWT, Swing, JavaFX & SWT 4
B JTextFields AWT, Swing, JavaFX & SWT 5
S Einfügen eines JTextFields in einen JTree AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben