Zum Inhalt springen

Probleme mit dem Keylistener


Narg

Empfohlene Beiträge

hi

ich hab zur übung ein applet geschrieben, das einen keylistener enthällt. dieser will aber nicht so recht bzw gar nicht. kann mir jemand sagen, woran das liegt?

hier mal der code:


import java.applet.*;

import java.awt.event.*;

import java.text.*;

import java.awt.Graphics;

import java.awt.*;


public class regen extends Applet implements KeyListener,ActionListener {


	private Button BTsumme;

	private int Mo, Di, Mi, Don, Fr, Sa, So;

	private TextField eingabeTF;

	private Label hdr, LBmo, LBdi, LBmi, LBdo, LBfr, LBsa, LBso, LBsumme, LBqsumme;

	public int menge, index, summe, qsumme;

	public boolean spressed;

	Panel p1, p2, p3, p4;


	public regen(){

		addKeyListener(this);

	}


	public void init(){

		BTsumme = new Button("Summe");

		add(BTsumme);

		BTsumme.addActionListener(this);

		eingabeTF = new TextField(4);

		add(eingabeTF);

		eingabeTF.addActionListener(this);

		LBmo = new Label(""); 

		LBdi = new Label("");

		LBmi = new Label("");

		LBdo = new Label("");

		LBfr = new Label("");

		LBsa = new Label("");

		LBso = new Label("");

		hdr = new Label("Niederschläge der letzten Woche");

		LBsumme = new Label("");

		LBqsumme = new Label("");

		index=0;

		spressed = false;

		p1 = new Panel();

		p2 = new Panel();

		p3 = new Panel();

		p4 = new Panel();

		p1.add(LBmo);

		p1.add(LBdi);

		p1.add(LBmi);

		p1.add(LBdo);

		p1.add(LBfr);

		p1.add(LBsa);

		p1.add(LBso);

		p2.add(hdr);

		p2.add(eingabeTF);

		p3.add(BTsumme);

		p4.add(LBsumme);

		p4.add(LBqsumme);

		setLayout(new BorderLayout());

		add("North", p2);

		add("West", p1);

		add("South", p3);

		add("Center", p4);

	}


	public void keyPressed(KeyEvent e){

		int day[] = new int[7];

		int taste = e.getKeyCode();

		if ((taste == 13) /*&& (index <= 7)*/){

			day[index] = Integer.parseInt(eingabeTF.getText());

			index++;

			eingabeTF.setText("test");

			switch(index){

				case 0:

				  LBmo.setText(String.valueOf(day[0]));

				  break;

				case 1:

				  LBdi.setText(String.valueOf(day[1]));

				  break;

				case 2:

				  LBmi.setText(String.valueOf(day[2]));

				  break;

				case 3:

				  LBdo.setText(String.valueOf(day[3]));

				  break;

				case 4:

				  LBfr.setText(String.valueOf(day[4]));

				  break;

				case 5:

				  LBsa.setText(String.valueOf(day[6]));

				  break;

				case 6:

				  LBso.setText(String.valueOf(day[7]));

				  break;

				}

		}

		for (int i=0;i<day.length;i++){

			summe=summe+day[i];

			}

		qsumme=summe/7;

	}


	public void keyReleased(KeyEvent e){}

	public void keyTyped(KeyEvent e){}


	public void actionPerformed(ActionEvent a){

		if (a.getSource()== BTsumme){

			LBsumme.setText(String.valueOf(summe));

			LBqsumme.setText(String.valueOf(qsumme));	

		}

	}


}


thx

Narg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

das Problem liegt daran, das du das Applet selbst nicht auf einem KeyListener Registrieren kannst (warum auch immer, das weiß ich leider auch nicht, würde es aber auch gerne wissen :))

Registriere einfach das TextField eingabeTF auf dem KeyListener, dann klappt das ganze.

Getestet mit innerer Klasse des KeyListeners.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm ich kriegs nicht hin...

wenn ich dich richtig verstanden habe, müsste der code ja in etwa so aussehen:


add(eingabeTF);

eingabeTF.addKeyListener(this);

so hab ich das verstanden, wenn anders gemeint war bitte berichtige mich.

noch ne andere frage: kann es sein, das mein ascii code falsch ist? so weit ich weiss steht doch die 13 für "return", oder?

Narg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Narg

noch ne andere frage: kann es sein, das mein ascii code falsch ist? so weit ich weiss steht doch die 13 für "return", oder?

Da Java Unicode fähig ist, muss das nicht sein.

Es gibt aber feste int Variablen die du benutzen kannst.

if (taste == java.awt.event.KeyEvent.VK_ENTER ){

du kannst java.awt.event.KeyEvent natürlich auch importieren, habe das nur zum verständnis so geschrieben.

Wenn VK_ENTER = 13 sein sollte, ist das natürlich gehoppst wie gesprungen. ;)

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...