Keylistener reagiert nicht

AsterixdGallier

Aktives Mitglied
hallo mein keylistener reagiert nicht hier erstmal der code:

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List

import javax.swing.AbstractAction;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;

public class PadController 
{
	List<PadView> list1 = new ArrayList<PadView>();
	PadModel padModel;
	File datei;
	SampleChooser chooser;
	SoundPlayer tmpplayer;
	boolean isMouseOnButton;
	boolean isMousePressed = false;
	PadView padView;
	PadController padController;
	boolean isAlreadyPressed = false;
	char taste;
	String tasteString;
	
	public PadController(PadModel padModel)
	{
		this.padModel = padModel;
		tmpplayer = new SoundPlayer();
	}
		
	public void addToList(PadView padView)
	{
		this.padView = padView;
		addMouseListenerToPad(padView);
		list1.add(padView);
	}
	
	private void addMouseListenerToPad(PadView padView)
	{	
		padView.addMouseListener(new MouseListener()
		{
			
			@Override
			public void mouseClicked(MouseEvent arg0) 
			{
				
			}

			@Override
			public void mouseEntered(MouseEvent arg0) 
			{
				for (int i = 0; i < list1.size(); i++)
				{
					if(isMousePressed == false)
					{
						list1.get(i).changeButtonImage(PadView.ButtonStyle.OVERLAY);
					}
					else
					{
						list1.get(i).changeButtonImage(PadView.ButtonStyle.CLICKED);
						try
						{
							tmpplayer.play();
						}
						catch(Exception e)
						{
							
						}
						
					}
				}
				isMouseOnButton = true;
			}

			@Override
			public void mouseExited(MouseEvent arg0) 
			{
				for (int i = 0; i < list1.size(); i++)
				{
					list1.get(i).changeButtonImage(PadView.ButtonStyle.NORMAL);
				}
				isMouseOnButton = false;
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
				try
				{
					if (SwingUtilities.isLeftMouseButton (arg0))
					{
						for (int i = 0; i < list1.size(); i++)
						{
							((PadView) list1.get(i)).changeButtonImage(PadView.ButtonStyle.CLICKED);
						}
						isMousePressed = true;
						tmpplayer.play();
						
					}	
					else if (SwingUtilities.isRightMouseButton (arg0))
					{
						showMenu(arg0);
					}
					else if(SwingUtilities.isMiddleMouseButton(arg0))
					{
						for (int i = 0; i < list1.size(); i++)
						{
							((PadView) list1.get(i)).changeButtonImage(PadView.ButtonStyle.CHOOSELETTER);
						}
					}
				}
				catch (Exception e)
				{
					
				}
			}

			@Override
			public void mouseReleased(MouseEvent arg0) 
			{
				for (int i = 0; i < list1.size(); i++)
				{
					if (isMouseOnButton == false)
					{
						list1.get(i).changeButtonImage(PadView.ButtonStyle.NORMAL);
					}
					else
					{
						list1.get(i).changeButtonImage(PadView.ButtonStyle.OVERLAY);
					}
					isMousePressed = false;
				}
			}
		});		
		padView.requestFocus(true);
	}
	
	public void showMenu(MouseEvent evt)
	{
		tasteString = null;
		isAlreadyPressed = false;
		JPopupMenu menu = new JPopupMenu();
		JMenuItem sample = new JMenuItem("Sample hinzufügen");
		menu.add((sample));
		sample.addActionListener(new ActionListener()
		{

			@Override
			public void actionPerformed(ActionEvent arg0) 
			{
				chooser = new SampleChooser(new ActionListener () 
				{
					public void actionPerformed (ActionEvent e) 
					{
						datei = chooser.getSelectedFile ();
						padModel.setDateiName(datei.getName());
						tmpplayer.initialisieren(datei);
						chooser.dispose();
					}
				}, new ActionListener ()
				{

					@Override
					public void actionPerformed(ActionEvent e) 
					{
							chooser.dispose();		
					}
					
				});
			}
		});
		JMenuItem bindkey = new JMenuItem("Taste zuweisen");
		menu.add(bindkey);
		System.out.println(padView);
				

		bindkey.addActionListener(new ActionListener()
		{

			@Override
			public void actionPerformed(ActionEvent e) 
			{
				System.out.println("Los geht´s");
				padView.addKeyListener(new KeyListener()
				{

					@Override
					public void keyPressed(KeyEvent e) 
					{
						char key = e.getKeyChar();
						System.out.println(key);
					}

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

					@Override
					public void keyTyped(KeyEvent e) {
						// TODO Auto-generated method stub
						
					}
					
				});
			}
			
		});
		
		menu.show(padView, evt.getX(), evt.getY());
	}
}

Dieser keylistener soll erst gestartet werden, nachdem die actionperformed methode aufgerufen wurde.
das ganze wird mehreren buttons zugewiesen. das lustige ist bei dem ersten button funktioniert es, klicke ich jedoch andere buttons an nicht. ich erzeuge die buttons in einer for-schleife in einer anderen klasse es muss also an dieser methode hier liegen. vllt kann mir diesmal jemand helfen
 
Zuletzt bearbeitet von einem Moderator:

AsterixdGallier

Aktives Mitglied
sorry habe die klasse nicht gepostet, addtolist() wird hier aufgerufen:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main 
{
//	private PadView padView;
//	private PadViewBig padViewBig;
//	private PadModel padModel;
	public static void main(String[] args) 
	{
		Main main = new Main();
		main.buildAFewPads();
	}
	
//	public void build()
//	{
//		final Dimension screenSize = Toolkit.getDefaultToolkit ().getScreenSize ();
//		JFrame frame = new JFrame();
//		JPanel panel = new JPanel();
//		frame.getContentPane ().add (panel, BorderLayout.CENTER);
//		panel.setVisible(true);
//		panel.setBackground(Color.gray);
//		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//		padModel = new PadModel();
//		PadModel modelacc = padModel;
//		padView = new PadView(modelacc);
//		padViewBig = new PadViewBig(modelacc);
//		modelacc.addObserver (padView);
//		modelacc.addObserver (padViewBig);
//		PadController controller = new PadController(padModel);
//		controller.addToList(padView);
//		controller.addToList(padViewBig);
//		panel.add(padView);	
//		frame.pack();
//		frame.setLocation (((int)screenSize.getWidth () / 2 - frame.getWidth () / 2), ((int) screenSize.getHeight () / 2) - frame.getHeight () / 2);
//		frame.setVisible(true);
//	}
//	
	public void buildAFewPads()
	{
		final int anzahlPads = 4;
		final int anzahlProReihe = 4;
		final Dimension screenSize = Toolkit.getDefaultToolkit ().getScreenSize ();
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		frame.getContentPane ().add (panel, BorderLayout.CENTER);
		panel.setVisible(true);
		panel.setFocusable(false);
		frame.setFocusable(false);
		panel.setBackground(Color.gray);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		panel.setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();
		for (int i = 0; i < anzahlPads; i++)
		{
			c.gridx = i % anzahlProReihe;
			c.gridy = i / anzahlProReihe;
			PadModel padModel = new PadModel();
			PadModel modelacc = padModel;
			PadView padView = new PadView(modelacc);
			padView.setFocusable(true);
			modelacc.addObserver (padView);
			PadController controller = new PadController(padModel);
			controller.addToList(padView);
			panel.add(padView, c);
		}	
		frame.pack();
		frame.setLocation (((int)screenSize.getWidth () / 2 - frame.getWidth () / 2), ((int) screenSize.getHeight () / 2) - frame.getHeight () / 2);
		frame.setVisible(true);
	}
}
 

Swoop

Gesperrter Benutzer
Hey,

weist du ob die ActionPerformed-Methode aufgerufen wird ? Dein Key-Listener sollte eigentlich eine Ausgabe machen.
Mach mal eine ausgabe vor den Key-Listener ...
Ich glaub aber dein Ablauf stimmt nicht ganz...

Wenn ich es richtig verstanden habe, müsstest du es so wollen:
Action-Performed wird ausgeführt -> Key-Listener wird aktiviert-> ab jetzt wird auf die Tasten reagiert?
Willst du das erreichen oder hab ich dich falsch verstanden?

Gruß Swoop
 

AsterixdGallier

Aktives Mitglied
richtig ich probiere es kurz aus
achso doch klar die actionperformed methode wird ausgeführt. das "los gehts" wird geschrieben in der console. meinst du nicht genau sowas?
 

Swoop

Gesperrter Benutzer
ja genau das mein ich,
dann weis ich nicht genau wie der Ablauf ist aber eigentlich sollte dein Listener hinzugefügt werden. Leider weis ich nicht wie man das bei Swing testen kann...
Versuch doch erstmal dein KeyListener direkt auf den padView zu legen. Wenn dann die ganze Zeit das gedrückte Zeichen ausgegeben wird stimmt etwas bei deiner actionperformed Methode nicht. (Also beim Ablauf) Wenn nein Funktioniert der KeyListener allgemein nicht...
 

AsterixdGallier

Aktives Mitglied
wenn ich es direkt in die padview klasse lege wird alles ausgegeben, der keylistener soltle richtig sein.
bei meinem ersten pad(button) funktiert das ganze ja auch, nur halt nur bei dem ersten. die actionperformed methode wird ja auch aufgerufen, irgendwie funktioniert nur die combination der beiden nicht.
also nochmal:
wenn ich "Taste hinzufügen" auf dem ersten button auswähle funktioniert es wie ich es mir vorstelle.
wähle ich "Taste hinzufügen" auf einem der anderen button (pads) aus passiert nichts.
obwohl ich die anderen genau so wie den ersten anlege, in der forschleife der Main klasse.
 

Swoop

Gesperrter Benutzer
Wann wird denn ActionPerformed aufgerufen... Sorry kenn den Listener nicht da ich nicht aus Swing sondern der SWT ecke komme !
 

AsterixdGallier

Aktives Mitglied
also actionperformed wird aufgerufen sobald ich im kontextmenu auf den eintrag "taste zuweisen" drücke. ja kein problem ist ja super dass du überhaupt dich damit beschäftigst. =)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
T Event Handling KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
P KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 11
M AWT KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
C Swing KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 7
M KeyListener reagiert nach Buttondruck nicht mehr AWT, Swing, JavaFX & SWT 4
A JButton reagiert nicht auf KeyListener//Focuslistener AWT, Swing, JavaFX & SWT 4
G KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
T KeyListener reagiert seltsam bei F10 (Systemtasten?) AWT, Swing, JavaFX & SWT 5
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
B Swing KeyListener auf Container? AWT, Swing, JavaFX & SWT 1
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
A Event Handling Muss ich 'KeyListener' tasuend mal zufügen? AWT, Swing, JavaFX & SWT 7
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
X KeyListener AWT, Swing, JavaFX & SWT 0
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
Z SnakeGame Schlange per KeyListener bewegen! AWT, Swing, JavaFX & SWT 10
T KeyListener AWT, Swing, JavaFX & SWT 2
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
J JWindow und keylistener AWT, Swing, JavaFX & SWT 1
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
C KeyListener AWT, Swing, JavaFX & SWT 5
Doopy Event Handling KeyListener funktioniert nach Restart nicht mehr AWT, Swing, JavaFX & SWT 7
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
C Swing KeyListener in JPanel AWT, Swing, JavaFX & SWT 2
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
E Swing KeyListener implementieren AWT, Swing, JavaFX & SWT 12
M KeyListener richtig implementieren AWT, Swing, JavaFX & SWT 3
T KeyListener AWT, Swing, JavaFX & SWT 4
R KeyListener in JWindow AWT, Swing, JavaFX & SWT 7
T BlueJ KeyListener AWT, Swing, JavaFX & SWT 7
Z KeyListener AWT, Swing, JavaFX & SWT 2
M Swing KeyListener in JTextfield AWT, Swing, JavaFX & SWT 4
C Swing KeyListener für JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 8
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
D Problem mit KeyListener AWT, Swing, JavaFX & SWT 2
J KeyListener um auf CTRL-Enter zu reagieren AWT, Swing, JavaFX & SWT 2
L Snake in Java KeyListener Problem AWT, Swing, JavaFX & SWT 30
B "globaler" KeyListener? AWT, Swing, JavaFX & SWT 3
B JTable TableHeader KeyListener AWT, Swing, JavaFX & SWT 4
S Swing KeyListener und JList AWT, Swing, JavaFX & SWT 2
R KeyListener funzt nicht AWT, Swing, JavaFX & SWT 2
X KeyListener AWT, Swing, JavaFX & SWT 4
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
M Fokus für KeyListener AWT, Swing, JavaFX & SWT 9
V Problem mit KeyListener im Fullscreen-Modus AWT, Swing, JavaFX & SWT 2
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
F Tastenabfrage (KeyListener) AWT, Swing, JavaFX & SWT 2
D KeyListener Problem bei JPanel wechsel AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, requestFocus und KeyBindings AWT, Swing, JavaFX & SWT 8
E JFrame akzeptiert den KeyListener nicht AWT, Swing, JavaFX & SWT 3
F Swing Problem mit KeyListener||paintComponent() in JFrame AWT, Swing, JavaFX & SWT 12
P Swing KeyListener hört nur manchmal zu AWT, Swing, JavaFX & SWT 2
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
earlgrey_tea AWT KeyListener bekommt keine Signale AWT, Swing, JavaFX & SWT 3
L Problem mit KeyListener AWT, Swing, JavaFX & SWT 3
A KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 4
D KeyListener-Problem nach dem "Gedrückthalten" einer Taste AWT, Swing, JavaFX & SWT 10
B Swing Keylistener fuer Dialog-Buttons AWT, Swing, JavaFX & SWT 2
B KeyListener Strg+s AWT, Swing, JavaFX & SWT 5
D Globaler Keylistener AWT, Swing, JavaFX & SWT 4
M problem mit keylistener/textarea AWT, Swing, JavaFX & SWT 6
M KeyListener Problem unter Firefox AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
capgeti SWT KeyListener 2 Tasten Problem AWT, Swing, JavaFX & SWT 3
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
Developer_X AWT KeyListener wird nicht ausgeführt! AWT, Swing, JavaFX & SWT 3
N JFrame und KeyListener AWT, Swing, JavaFX & SWT 6
A AWT Button verhindert ausführung vom Keylistener AWT, Swing, JavaFX & SWT 4
R KeyListener hinzufügen AWT, Swing, JavaFX & SWT 7
T Swing KeyListener mit mehreren Objekten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben