KeyListener reagiert nicht!

Pichel

Mitglied
Hallo,

ich habe in einer Klasse eine KeyListener eingebaut, leider funktioniert diese nicht und ich finde nciht den Fehler.

Ich hoffe, es kann mir jemand helfen.
Vielen Dank

Java:
package view;


import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.*;

import model.BerechneDaten;
import view.Statusbar;



public class BerechnungView extends JPanel implements KeyListener{
	
	static final String NEWLINE = "\n";

	public BerechnungView(){
		super();
		init();
		addKeyListener(this);
	}
	
	JTextField tf = new JTextField("5");
	JTextField tf1 = new JTextField("10");
	JTextField tf2 = new JTextField("100");
	JTextField tf3 = new JTextField("55");
	JTextField tf4 = new JTextField("30");
	JTextField tf5= new JTextField("100");
	BerechneDaten gBD = new BerechneDaten();
	
	private void init(){
		
		setLayout(null);
		JLabel jl = new JLabel("Variable Daten zur Berechnung");
		jl.setBounds(10, 215, 250, 30);
		jl.setFont(new Font("SansSerif",Font.BOLD,17));
		add(jl);
	
		/*------------ Ende Überschrift -----------------*/	
		
		JLabel jl1 = new JLabel("Anzahl Beteiligter");
		jl1.setBounds(40,250, 150, 30);
		add(jl1);
		
		
		//String daten = "";
		//gBD.getDaten(daten);
		tf.setBounds(160, 255, 120, 20);
		add(tf);
	
		/*------------ Ende 1. Datenreihe Links -----------------*/		
	
		JLabel jl2 = new JLabel("Anzahl Touren");
		jl2.setBounds(40, 272, 150, 30);
		add(jl2);
		tf1.setBounds(160, 277, 120, 20);
		add(tf1);
		
		/*------------ Ende 2.Datenreihe Links-----------------*/	
		
		JLabel jl3 = new JLabel("Anzahl Objekte");
		jl3.setBounds(40, 294, 150, 30);
		add(jl3);
		tf2.setBounds(160, 299, 120, 20);
		add(tf2);
		
		/*------------ Ende 2.Datenreihe Links-----------------*/
		
	
		JLabel jl4 = new JLabel("Gutachter");
		jl4.setBounds(330, 250, 100, 30);
		add(jl4);
		tf3.setBounds(400, 255, 50, 20);
		add(tf3);
		
		/*------------------ Ende 1. Datenreihe Rechts -------------------*/
		
		JLabel jl5 = new JLabel("Assistenz");
		jl5.setBounds(330, 272, 100, 30);
		add(jl5);
		tf4.setBounds(400, 277, 50, 20);
		add(tf4);
		
		/*------------------ Ende 2. Datenreihe Rechts -------------------*/
		
		JLabel jl6 = new JLabel("Beteiligter");
		jl6.setBounds(330, 294, 100, 30);
		add(jl6);
		tf5.setBounds(400, 299, 50, 20);
		add(tf5);
		
		/*------------------ Ende 3. Datenreihe Rechts -------------------*/
		
		JButton jb = new JButton("Berechnen");
		jb.setMargin(new Insets(2,2,2,2));
		jb.setFont(new Font("Arial",Font.BOLD,12));
		jb.setBounds(490, 339, 80, 30);
		
		 jb.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					buttonKlick();
					getBerechnung();
				}
		 });
		  
		jb.addKeyListener(this);
		add(jb);
		
		JSeparator js = new JSeparator();
		js.setBounds(10,195,610,1);
		add(js);
		
		JSeparator jsv = new JSeparator(SwingConstants.VERTICAL);
		jsv.setBounds(300, 10, 1, 180);
		add(jsv);
		
		JLabel jl7 = new JLabel("Ergebnisse der Berechnung");
		jl7.setBounds(320, 5, 250, 30);
		jl7.setFont(new Font("SansSerif",Font.BOLD,14));
		add(jl7);
		
		Statusbar st = new Statusbar();
		setBounds(0, 400, 630, 21);
		add(st);
		
		JLabel bild = new JLabel();
		bild.setIcon(new ImageIcon(getClass().getResource("../image/logo-pkr.jpg")));
		bild.setBounds(10, 10, 300,180);
		add(bild);
		
		
		int y = 255;
		for(int i = 0; i< 2; i++){
			JLabel preis = new JLabel(" € pro Stunde");
			preis.setBounds(455, y, 100, 20); 
			add(preis);
			y = y +22;
		}
		
		JLabel preis3 = new JLabel(" € pro Objekt");
		preis3.setBounds(455, 299, 100, 20);
		add(preis3);
		
		
	
	}	
	
	public void getBerechnung(){
		JLabel label = new JLabel("Kosten ohne DEL: ");
		label.setBounds(320, 40, 150, 20);
		add(label);
		
		JLabel label2 = new JLabel(gBD.rechneGesamtOhneDEL() + " €");
		label2.setBounds(470,40,150,20);
		add(label2);
		
		JLabel label1 = new JLabel("Kosten mit DEL: ");
		label1.setBounds(320,60, 150, 20);
		add(label1);
		
		JLabel label3 = new JLabel(gBD.rechneGesamtMitDEL() + " €");
		label3.setBounds(470,60,150,20);
		add(label3);
		
		repaint();
	}
	
	public void buttonKlick(){
		//Hole Zahlen aus Textfeldern
		// Daten des Beteiligten
		double aBTf = 0;
		// Daten der Touren
		double aTTf = 0;
		// Daten der Objekte
		double aOTf = 0;
		// Preis des Gutachters
		double pGTf = 0;
		// Preis des Assitenten
		double pATf = 0;
		// Preis des Beteiligten
		double pBTf = 0;
		
		aBTf = Double.parseDouble(tf.getText());
		aTTf = Double.parseDouble(tf1.getText());
		aOTf = Double.parseDouble(tf2.getText());
		pGTf = Double.parseDouble(tf3.getText());
		pATf = Double.parseDouble(tf4.getText());
		pBTf = Double.parseDouble(tf5.getText());
		
		gBD.setDaten(aBTf);
		gBD.setDaten(aTTf);
		gBD.setDaten(aOTf);
		gBD.setDaten(pGTf);
		gBD.setDaten(pATf);
		gBD.setDaten(pBTf);
	}
	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
	}
	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		if(e.getKeyCode() == KeyEvent.VK_ENTER){
			buttonKlick();
		}
	}
}
 
Java:
jb.addKeyListener(this);        
add(jb);

Du addest den KeyListener einem Button zu ?!


//EDIT Ah ne tut mir leid hab nicht genau geschaut entschuldigung

Würd ich nicht machen aber ich test es mal


Versuch mal den KeyListener der Frame zuzuordnen in der du das Panel einbindest
 
Zuletzt bearbeitet:
Da du ein Enter abfragen willst, kannst du auch einfach einen Actionlistener verwenden und an den Textfeldern registirieren. (praktischerweise der gleiche wie der vom Button).
 

Neue Beiträge

Zurück