Tastatur eingaben verwenden

Status
Nicht offen für weitere Antworten.

HTML

Bekanntes Mitglied
Hi, ich hab in meinem Prog zwei TextFields und möchte gerne, dass man durch drücken der ENTER Taste zum nächsten springt. Sozusagen, dass die Enter Taste die gleiche Funktion haben würde wie die TAB Taste. Geht das??

danke schon mal
euer HTML
 

Redfrettchen

Bekanntes Mitglied
Hi,
versuch doch im KeyListener den Fokus zu wechseln
Code:
public void keyPressed(KeyEvent e) {
    if (e.getKeyCode()==KeyEvent.VK_ENTER) {
        if (comp1.isFocusOwner()) comp2.requestFocusInWindow();
        else if (comp2.isFocusOwner()) comp1.requestFocusInWindow();
    }
}
 
H

html offline

Gast
wie sieht denn der KeyListener gesamt aus??
und wo muss ich den einbinden?

ich bin noch blutiger anfänger, also bitte ne kurze erklärung,

schon mal danke
 

Redfrettchen

Bekanntes Mitglied
Hallo,
also zum Beispiel im Konstruktor deines Frames (oder JFrames) schreibst du
Code:
addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode()==KeyEvent.VK_ENTER) { 
        if (comp1.isFocusOwner()) comp2.requestFocusInWindow(); 
        else if (comp2.isFocusOwner()) comp1.requestFocusInWindow(); 
    }
}

Aber ich weiß nicht, ob das klappt.
 

HTML

Bekanntes Mitglied
hi, es klappt nicht.

Vielleicht kann mir ja jemand so einen KeyListener posten und die funktion krieg ich dann schon selber hin. Ich bräuchte aber den funktionierenden Key Listener sprich das ich auf enter drücke und es passiert was.

danke und merci
aus bavaria
 

susa.

Mitglied
Code:
addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode()==KeyEvent.VK_ENTER) 
        {
               //Hier stehen die Ereignisse, die nach Enter ausgeführt werden
        }
}
 

L-ectron-X

Gesperrter Benutzer
Hier noch eine Lösung mit ActionListener:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyFrame extends JFrame {
  private JTextField tf1, tf2;
  private JLabel lab;
  
  public MyFrame(String title) {
    super(title);
    setSize(250, 100);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    lab = new JLabel("Enter drücken für Focuswechsel");
    lab.setHorizontalAlignment(SwingConstants.CENTER);
    add(lab, BorderLayout.CENTER);
    
    tf1 = new JTextField();
    tf1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        tf2.requestFocus();
      }
    });
    add(tf1, BorderLayout.NORTH);
    
    tf2 = new JTextField();
    tf2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        tf1.requestFocus();
      }
    });
    add(tf2, BorderLayout.SOUTH);
    
    setVisible(true);
  }
  
  public static void main(String[] args) {
    new MyFrame("TextFocus");
  }
}
 

HTML

Bekanntes Mitglied
Code:
   addKeyListener(new KeyAdapter() { 
   public void keyPressed(KeyEvent e) { 
   if (e.getKeyCode() == KeyEvent.VK_ENTER) 
       { 
       day.setText("test");
       }
       }});

ok, ich musste noch ein paar }s einfügen, sonst kam eine fehlermeldung.
"day" ist ein JTextField, ich mach das nur mal so zum test.
Jetzt hab ich den code von oben direkt in mein JFrame eingefügt.
Also müsste doch wenn ich jetzt Enter drücke auf in meinem TextField der Text "test" erscheinen ??
tut er aber nicht.
muss ich noch irgendwas zusätzlich reinschreiben, oder so??
danke schon mal

mfg html
 

HTML

Bekanntes Mitglied
hi, also ich hab jetzt mal die lösung von L-ectron-X genommen, jetzt wollte ich aber in den ActionListener unter actionPerformed noch ein paar andere Funktionen mit einbauen.

z.B. will ich auch noch dass wenn man enter drückt mit setText ein JLabel verändert wird, da des jetzt nicht geht und der KeyListener auch nicht, bräucht ich noch n bisschen hilfe.
Is an dem Listener was falsch den ich als letztes gepostet hab?
Muss ich ihn ins JFrame positioniern, oder?

oder wieso funktioniert des nicht wenn ich beim beispiel von L-ectron-X das label lab verändern will??
 

HTML

Bekanntes Mitglied
unter "tf2.requestFocus(); "
hab ich geschrieben

lab.setText("test");

funzt aber net

danke für eure antworten
 

L-ectron-X

Gesperrter Benutzer
Das geht bei mir. Musst schon genauer sagen, was nicht funktioniert.
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyFrame extends JFrame {
  private JTextField tf1, tf2;
  private JLabel lab;
  
  public MyFrame(String title) {
    super(title);
    setSize(250, 100);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    lab = new JLabel("Enter drücken für Focuswechsel");
    lab.setHorizontalAlignment(SwingConstants.CENTER);
    add(lab, BorderLayout.CENTER);
    
    tf1 = new JTextField();
    tf1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
              tf2.requestFocus();
              lab.setText("Focus: tf2");
      }
    });
    add(tf1, BorderLayout.NORTH);
    
    tf2 = new JTextField();
    tf2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
              tf1.requestFocus();
              lab.setText("Focus: tf1");
      }
    });
    add(tf2, BorderLayout.SOUTH);
    
    setVisible(true);
  }
  
  public static void main(String[] args) {
    new MyFrame("TextFocus");
  }
}
 

HTML

Bekanntes Mitglied
also bei mir is das so:

Code:
class TextFrame extends JFrame {
	  	  
	  private JLabel label;
	  	  
    public TextFrame(){
    	
    day = new JTextField(""); 
    day.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
        month.requestFocus(); 
      } 
    }); 
    add(day, BorderLayout.NORTH); 
    
    month = new JTextField(""); 
    month.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
        day.requestFocus();
        label.setText("test");
      } 
    }); 
    add(month, BorderLayout.SOUTH);

Das Label steht in einer anderen Class und einem anderen Fenster

siehe:

Code:
class NAVIpanel extends JPanel
{	
	public NAVIpanel()
	{
	JLabel label = new JLabel("")
                add(label);
}
}

das kompilieren geht einwandfrei, aber wenn ich dann ENTER drücke kommt in der Kommandoebene ein Fehler
( Exception in thead "AWT EventQueue 0" java.lang.NullPionterException
at...
....
...

ziemlich lang :###
 

L-ectron-X

Gesperrter Benutzer
Die NullPointerException bekommst du, weil du das JLabel in der Klasse TextFrame nicht instanziierst, sondern nur eine Instanzvariable davon deklarierst. Im Programmverlauf soll dann auf diesem JLabel ein Text angezeigt werden...
Du greifst auf etwas zu, was nicht da ist.

Wenn dein JLabel in einer anderen Klasse liegt, brauchst du eine Referenz auf diese Klasse (NAVIpanel) und eine Methode in dieser Klasse, die den Text entgegen nimmt und auf das JLabel schreibt.
Dann kannst du den Text an die Methode der Klasse NAVIpanel übergeben.
 

HTML

Bekanntes Mitglied
Erstmal danke für die gute Erklärung, aber wie schaut denn so eine Referenz aus??
wenn mir das noch jemand posten könnte bin ich wirklich einen großen schritt weiter.

merci und ciao
 

HTML

Bekanntes Mitglied
es will net so richtig funktioniern, was setzt man denn in meinem Fall für Produkt produkt bzw. hersteller ein??
 

HTML

Bekanntes Mitglied
so, ich hab des jetzt ausprobiert, soweit bin ich:

Die Klasse NAVIpanel ist ein JPanel - mein Hersteller - , in diesem Panel erzeuge ich das JLabel lab --> mein produkt.
Code:
class NAVIpanel extends JPanel {			

private labi lab;
private String name;

    lab = new labi(this);
	
    public String getName() {
     return name;
}	
}
das war jetzt quasi der code in meiner Hersteller-Klasse. soweit richtig?

achja: das JPanel NAVIpanel habe ich so erzeugt: new JPanel panel3 = NAVIpanel();

meine Produkt-Klasse is die hier:
Code:
class labi extends JLabel{
  private NAVIpanel panel3;
	
  public labi(NAVIpanel panel3){
  this.panel3 = panel3;
  }
	
  public String getHerstellerName() {
  panel3.getName();
  }
}

biem kompilieren bekomme ich nur einen Fehler :

in der Zeile lab= new labi(this);
der Fehler heißt "<identifier> expected"

hab ich das ganze richtig umgesetzt oder total daneben gelangt?
und wieso kommt der fehler? thx und noch eins,
wie nennt man denn so was, weil ich "Referenzen" in meinem Buch nicht gefunden hab.

gut nacht
 

L-ectron-X

Gesperrter Benutzer
Die Zeile 7 Deiner Klasse NAVIpanel gehört in den Konstruktor.
Im Moment steht sie im leeren Raum. Die Anweisung in Zeile 7 funktioniert nur, wenn sie innerhalb einer Methode steht.

Referenzen sind Zeigervariablen, die auf Objekte bzw. Instanzen im Heap (Speicherbereich für Objekte in der VM) zeigen.
Wenn Du Datei-Verknüpfungen von Windows kennst, so ungefähr kann man auch Referenzen betrachten.

In welcher Klasse befindet sich denn dein JLabel? Diese Klasse hat den Zugriff auf dein JLabel und kann somit den Text entgegennehmen und auf das JLabel schreiben.
 

HTML

Bekanntes Mitglied
mein JLabel steht in NAVIpanel. Diese Klasse ist das Panel auf dem das JLabel stehen soll. von einer ganz anderen klasse aus( nämlich TextFrame ) soll jetzt ein text da drauf geschrieben werden. geht das dann überhaupt?
 

L-ectron-X

Gesperrter Benutzer
Ja klar, nur in welchem Verhältnis stehen die Klassen zueinander?
Kennt die Klasse TextFrame die Klasse NAVIPanel bzw. hat die Klasse TextFrame eine Instanz von NAVIPanel?
Wenn wir das geklärt haben, kann ich dir hoffentlich sagen, wie du dein Ziel erreichst.

Wenn NAVIPanel in TextFrame bekannt ist, braucht NAVIPanel im Prinzip nur eine Methode, die den Text entgegennimmt und aufs JLabel schreibt.
Code:
//Methode in NAVIPanel
public void setTextOnMyLabel(String text) {
   myLabel.setText(text);
}

In der Klasse TextFrame übergibst du den Text:
Code:
NAVIPanel naviPanel;
[...]

//irgendwo in TextFrame
naviPanel.setTextOnMyLabel("So einfach geht das!");
 

HTML

Bekanntes Mitglied
nein, sie ist nicht bekannt, des ist ja des problem, oder??

NAVIPanel ist ein Panel von einem ganz anderem JFrame.

In TextFrame sind die beiden JTextFields die den Focus wechseln ( auch von dir ) und dabei würd ich gern den Inhalt von dem JLabel in
NAVIPanel ändern.
 

L-ectron-X

Gesperrter Benutzer
Wo wird denn der "ganz andere Frame" verwendet? Steht dieser Frame mit dem TextFrame irgendwie in Verbindung?
Öffnet bspw. der eine Frame den anderen?
 

HTML

Bekanntes Mitglied
Code:
public class KSAVE {
    
    public static void main(String[] args) {

        TextFrame frame1 = new TextFrame();
        frame1.setVisible(true);

		TestFrame frame3 = new TestFrame();
		frame3.setVisible(true);
    }
}

das ist die main-class in dem die beiden Fenster erzeugt werden, ansonsten laufen sie ohne verbindung.
 

L-ectron-X

Gesperrter Benutzer
Dann kann man das so machen:
Code:
public class KSAVE { 
    
    public static void main(String[] args) {
        AndererFrame andererFrame = new AndererFrame(); 
        andererFrame.setVisible(true); 

        TextFrame textFrame = new TextFrame(andererFrame); 
        textFrame.setVisible(true);  
    } 
}



Code:
public class TextFrame extends JFrame {
   private AndererFrame frame;
   [...]
 
   public TextFrame(AndererFrame frame) {
      this.frame = frame;
      [...]
   }

   private void setTextOnLabel(String text) { 
      frame.setTextOnLabel(text);
   }

   [...]
}



Code:
public class AndererFrame extends JFrame {
   [...]

   public void setTextOnLabel(String text) { 
      label.setText(text); // JLabel auf dem NAVIPanel
   }

   [...]
}
 

HTML

Bekanntes Mitglied
so ich hab jetzt alles genauso gemacht, außer das bei mir die Klassen nicht alle public sind ( TextFrame und AndererFrame sind nicht ).
Muss des sein ?
dann bekomm ich beim kompilieren auch noch den Fehler, dass er in zeile 5 ( 3. codefeld bei dir ) "label" bzw. wie es bei mir heißt "lab" nicht findet. Wenn ich dann noch
private JLabel lab;
hinzufüge, krieg ich wieder die alte NullPointerException

des einzige was möglicherweise falsch ist, ist eigentlich des mit den public Klassen.
jetzt probier ichs mal mit public klassen ...
 

L-ectron-X

Gesperrter Benutzer
Ohne deinen vollständigen Code werden wir das wohl nicht hinbekommen.
Hast du wenigstens verstanden, was ich mit meinen Zeilen bezwecke?
 

HTML

Bekanntes Mitglied
funzt net, naja ich werds nochmal überprüfen, aber eigentlich hab ich alles 1:1 übernommen und bloß die Namen ausgetauscht. :###
 

HTML

Bekanntes Mitglied
is des eigentlich absicht, dass du im 2. code nicht
Code:
private AndererFrame andererFrame;
sondern
Code:
private AndererFrame frame;
nimmst?

sonst hab ichs schon so grob verstanden, glaub ich, danke. :idea:
 

L-ectron-X

Gesperrter Benutzer
Ich hab nur einmal private AndererFrame frame;.
Aber ich weiß schon was du meinst.

Es handelt sich hier nur um einen Namen für eine Referenz auf ein Objekt vom Typ AndererFrame.
Mit welchem Namen du die nach Übergabe der Referenz im Konstruktor speicherst bleibt dir überlassen.

Und so funktioniert auch:
Code:
public class TextFrame extends JFrame { 
   private AndererFrame frame; 
   [...] 

   public TextFrame(AndererFrame andererFrame) { 
      frame = andererFrame; //es ist quasi nur eine Zuweisung einer Speicheradresse der VM
      [...] 
   } 

   private void setTextOnLabel(String text) { 
      frame.setTextOnLabel(text); // Zugriff auf die Instanz von AndererFrame über die Referenz namens "frame"
   } 

   [...] 
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java die Tastatur übernehmen lassen Allgemeine Java-Themen 5
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
M Event Handling Tastatur abfrage Allgemeine Java-Themen 5
S Input/Output Tastatur als Midi-Keyboard Allgemeine Java-Themen 2
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
M Swing Virtuelle Tastatur mit Accents Allgemeine Java-Themen 9
P Matrix von Tastatur in 2D Array??? Allgemeine Java-Themen 7
D Tastatur Aktion Allgemeine Java-Themen 36
R Java Tastatur überwachung Allgemeine Java-Themen 2
P Tastatur abfrage ohne KeyListener Allgemeine Java-Themen 3
M Tastatur eingabe über Buttons Allgemeine Java-Themen 15
X Motor mit Tastatur ansteuern Allgemeine Java-Themen 5
H tastatur von englisch auf deutsch stellen Allgemeine Java-Themen 3
T Einzelnes Zeichen von der Tastatur einlesen, aber ohne Enter Allgemeine Java-Themen 4
J Java reagiert nicht mehr auf die Tastatur Allgemeine Java-Themen 2
F JavaProgramm mit der Tastatur Steuern Allgemeine Java-Themen 3
G Tastatur abfrage Allgemeine Java-Themen 8
A Listener Tastatur Allgemeine Java-Themen 3
D Suche "virtuelle Tastatur" Allgemeine Java-Themen 3
T Tastatur global abfragen Allgemeine Java-Themen 2
M Tastatur sperren Allgemeine Java-Themen 6
F Tastatur klick klick Allgemeine Java-Themen 5
T Prozessorticks/Tastatur überwachen/ -> Wiederholbarkeit? Allgemeine Java-Themen 15
conan2 Midi: Tastatur-Klavier Allgemeine Java-Themen 2
P Virtuelle Tastatur Allgemeine Java-Themen 5
A Serielle Schnittstelle | Barcodescan | ohne Tastatur Allgemeine Java-Themen 11
H Tastatur abhören Allgemeine Java-Themen 8
I if-eingaben nur einmal anzeigen Allgemeine Java-Themen 6
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
L Im Thread auf Eingaben warten Allgemeine Java-Themen 3
P Servlet Eingaben sicher machen Allgemeine Java-Themen 5
M Scanner-Methode: Mehrere Eingaben mit Exception behandeln Allgemeine Java-Themen 10
G Eingaben in Textdatei speichern Allgemeine Java-Themen 5
D Algorithmus für die Erkennung fehlerhafter Eingaben Allgemeine Java-Themen 4
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
J Welchen Packager soll ich verwenden. Allgemeine Java-Themen 7
H lokale Variable bei Optional verwenden Allgemeine Java-Themen 11
M Exceptions - wann / wie verwenden? Allgemeine Java-Themen 4
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
bueseb84 Git : Mehrere Server verwenden Allgemeine Java-Themen 3
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
D Klassen JLabels in anderen Klassen verwenden. Allgemeine Java-Themen 7
D API Keys mehrmals verwenden Allgemeine Java-Themen 6
K For-Schleife <> oder != Operator verwenden? Allgemeine Java-Themen 2
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
J PDFBox kommerziell verwenden Allgemeine Java-Themen 15
S Variablen split-Funkton mit zwei Variabeln verwenden? Allgemeine Java-Themen 4
K jar-Datei lässt sich unter Windows nicht verwenden Allgemeine Java-Themen 3
M Java Mail verwenden Allgemeine Java-Themen 20
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
J Interface Wofür Interfaces in Java verwenden? Allgemeine Java-Themen 3
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
O 3D-Grafik java3D in eclipse verwenden Allgemeine Java-Themen 0
J Allgemein gültige Klasse/Methode mehrfach verwenden Allgemeine Java-Themen 11
R Threads ReentrantLock mehrfach verwenden Allgemeine Java-Themen 3
J Interface Interface für Framework verwenden Allgemeine Java-Themen 4
G Services verwenden sich gegenseitig Allgemeine Java-Themen 4
R Dateimanager verwenden Allgemeine Java-Themen 2
P Variablen Variable von void im ActionListener verwenden Allgemeine Java-Themen 3
N VB Code in Java verwenden Allgemeine Java-Themen 5
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
A Klassen String Array in anderer Klasse verwenden Allgemeine Java-Themen 11
P JDK installieren Mac OS X - JDK7 in Eclipse Juno verwenden Allgemeine Java-Themen 3
L Eine jar verwenden, die intern auf eine andere jar zugreift Allgemeine Java-Themen 7
S Aus Programm Klasse erstellen und verwenden Allgemeine Java-Themen 10
R Collections CopyOnWriteArrayList - wie genau verwenden Allgemeine Java-Themen 7
M Lock Datei intelligent verwenden Allgemeine Java-Themen 4
J Eure Meinung: Threads verwenden, oder nicht? Allgemeine Java-Themen 6
X Threads Thread mehrmals verwenden Allgemeine Java-Themen 4
G JGoodies Binding oder EventBus verwenden? Allgemeine Java-Themen 11
E Kann nicht gesamten HeapSpace verwenden Allgemeine Java-Themen 5
A Eigenen OutputStream schreiben und verwenden Allgemeine Java-Themen 9
M Poi-Excel: vorhandene Formatierung verwenden Allgemeine Java-Themen 2
B boolean return typ verwenden? Allgemeine Java-Themen 5
R ResourceBundle in Servlets verwenden Allgemeine Java-Themen 13
A Welche Exception verwenden? Allgemeine Java-Themen 2
R Java function die Strings escaped, sodass ich sie in Javascript verwenden kann? Allgemeine Java-Themen 4
MQue Vector<..> nicht verwenden Allgemeine Java-Themen 4
T Pfad aus Dateilesen -> wie diesen Pfad verwenden! Allgemeine Java-Themen 13
R in einem neuen Runnable() eine lokale Varibale verwenden Allgemeine Java-Themen 2
G dll verwenden Allgemeine Java-Themen 2
A Bestimmte JVM verwenden Allgemeine Java-Themen 13
R array.length in For-Schleife verwenden? Allgemeine Java-Themen 22
F Generics: spricht etwas dagegen raw types zu verwenden? Allgemeine Java-Themen 31
B Passwort verwenden ohne dass es im Quelltext steht Allgemeine Java-Themen 24
D Lostus Notes Adressbuch in eine Java-Webanwendung verwenden Allgemeine Java-Themen 4
G JasperReports: Verwenden von vorkompilierten Reports Allgemeine Java-Themen 2
ToNyXXL Als Mauszeiger eigenes Bild verwenden! Allgemeine Java-Themen 3
A Windows Bitmap-Handle in Java verwenden Allgemeine Java-Themen 2
G Ab wann Datenbank verwenden Allgemeine Java-Themen 15
D .dlls mit Java verwenden Allgemeine Java-Themen 2
M JNI mit vorhandenen libs oder dlls verwenden Allgemeine Java-Themen 2
N Klasse die in C geschrieben wurde in Java verwenden? Allgemeine Java-Themen 20
E Statt HashSet die TreeSet verwenden Allgemeine Java-Themen 4
G eigene klassen die ein jar verwenden als neues jar erstellen Allgemeine Java-Themen 4
M java klassen beerben u. den gleichen namen verwenden?(Naming Allgemeine Java-Themen 6
S Änderungen im Source-Code direkt verwenden können? Allgemeine Java-Themen 3
R Sofort "eth0" verwenden Allgemeine Java-Themen 2
G Photoshop Plugins in Java verwenden. Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben