Warum funktioniert der KeyListener nicht?

IZZO

Mitglied
Java:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;


public class Hauptklasse implements ActionListener, KeyListener {
	
	JFrame frame = new JFrame();
	JTextField orb = new JTextField();
	JTextField trb = new JTextField();
	JTextField obf = new JTextField();
	JTextField tbf = new JTextField();
	JTextField nash = new JTextField();
	JTextField drag = new JTextField();
	JButton button = new JButton("jo");
	
	Thread cd1 = new Thread() {
		public void run() { new Countdown(orb,5,0);}
	};
	Thread cd2 = new Thread() {
		public void run() { new Countdown(trb,5,0);}
	};
	Thread cd3 = new Thread() {
		public void run() { new Countdown(obf,5,0);}
	};
	Thread cd4 = new Thread() {
		public void run() { new Countdown(tbf,5,0);}
	};
	Thread cd5 = new Thread() {
		public void run() { new Countdown(drag,6,0);}
	};
	Thread cd6 = new Thread() {
		public void run() { new Countdown(nash,7,0);}
	};
	
	
	

	
	
	public Hauptklasse(){
		
		
		frame.setBounds(0,0,600,150);
		frame.setVisible(true);
		frame.setLayout(null);
		frame.setAlwaysOnTop(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		button.setBounds(0,70,50,50);
		button.addActionListener(this);
		frame.add(button);
		//bla.addKeyListener(bla);
		
		cdtf(  0,0,80,18,orb);
		cdtf(100,0,80,18,trb);
		cdtf(200,0,80,18,obf);
		cdtf(300,0,80,18,tbf);
		cdtf(400,0,80,18,drag);
		cdtf(500,0,80,18,nash);
		
		

	}

	public void cdtf(int xplacecoord, int yplacecoord, int height, int width, JTextField countdowntextfeld){
		
		frame.add(countdowntextfeld);
		countdowntextfeld.setBounds(xplacecoord,yplacecoord,height,width);
		countdowntextfeld.setFocusable(false);
		countdowntextfeld.setEditable(false);
	}
	
	
	 public void actionPerformed(ActionEvent e) { 
	        if(e.getSource() == button){ 
	            System.out.println("Button geklickt!");
	            cd1.start();
	        } 
	    } 
	 
	 
		public void keyPressed(KeyEvent e) {
			if(e.getKeyCode() == KeyEvent.VK_F1){
				System.out.println("jojojoj");
				cd2.start();
			}
			
		}
	 
	
	 
	 
	public static void main(String[] args) {

		 new Hauptklasse();
		//new Countdown(orb, 5,0);
		//new CountdownThreads();
		
		

	}

	
	
	

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}





}
 
Zuletzt bearbeitet:
Hi

wo addest du den Listener?
So, wie der button in Zeile 57 einen ActionListener bekommt,
muss auch der KeyListener irgendwo zugewiesen werden.

Btw, was sind diese ganzen Countdown´s, bei denen du orb in Threads übergibst?
(nur um sicherzugehen, sagt dir invokeLater etwas?)
 
Die Countdowns sind ne eigene Klasse und das bei allen orb steht istn Fehler den ich schon korrigiert habe, allerdings nicht zur Lösung meines Probs beiträgt. Wo muss der KeyListener denn zugewiesen werden?
 
Nein, invoke later sagt mir nichts. Ich möchte mit diesem Programm verschiedene Countdowns runter laufen lassen und anzeigen lassen. Mit Buttons kann ich einen von ihnen schon starten nur mit Keys geht es irgendwie nicht
 
IMHO musst du einen KeyListener adden. Den kannst du allerdings nur an die Komponente adden, die dein Frame darstellt. Das würde ich im Constructor machen. Du hast da ja schon einen Versuch gestartet. Versuch es mal so:

Java:
frame.addKeyListener(this);

Wie geschrieben, im Constructor, die Frame-Komponente muss eine gültige Instanz sein.
 

Neue Beiträge

Zurück