FocusListener

Status
Nicht offen für weitere Antworten.

bonatus

Aktives Mitglied
Hallo,

Ich habe in einem JFrame drei JPanels.
Immer wenn der Focus in dem jeweiligen JPanel ist soll etwas passsieren.

So sieht es bis jetzt aus:

Code:
public void focusGained (FocusEvent e) 
    {
	if(bibliothek.hasFocus()==true)
	    {System.out.println("bibliothek");}
	if(history.hasFocus()==true)
	    System.out.println("history");
	if(sendestatus.hasFocus()==true)
	    System.out.println("sendestatus");
    }
public void focusLost(FocusEvent e) { }

den FocusListener habe ich den JPanels(bibliothek,history,sendestatus) hinzugefügt.

Es passiert aber nichts, wenn ich die JPanels wechsle.

gruß bonatus
 

bonatus

Aktives Mitglied
Er springt nicht mal in die Gainded Methode. Und wechslen geschiet über eine Taste - mit KeyListener
 

The_S

Top Contributor
Und wie schaut das dann aus, wenn gewechselt wird? Wechseln ist ein dehnbarer begriff ...
 

bonatus

Aktives Mitglied
Das ist der KeyListener:

Code:
public void keyPressed(KeyEvent e)
	{
		//Springen mit der Strg Taste zwischen den Elementen
		if((e.getKeyCode() == e.VK_CONTROL))
		{	
			if (schneidplaene.hasFocus()==false || tfAnzSp.hasFocus()==false
			||tHistory.hasFocus()==false)
			{schneidplaene.requestFocus();}
			
			if (schneidplaene.hasFocus())
			{tfAnzSp.requestFocus();tfAnzSp.selectAll();}
					
			if (tfAnzSp.hasFocus()) 
			{tHistory.requestFocus();tHistory.setRowSelectionInterval(0, 0);}

			if (tHistory.hasFocus()) 
			{schneidplaene.requestFocus();}
		}
	}
 

The_S

Top Contributor
Also über den requestFocus() läuft das Ganze!? Aber da werden die einzelnen Methoden schon aufgerufen!? Versuchs mal mit requestFocusInWindow!
 

The_S

Top Contributor
Sicher dass die Panels auch den Focus haben? Nochmal die Frage: Geht er in die ganzen If-Abfragen auch rein? Nicht das die Abfragen einfach nicht erfüllt werden! Ein kleines KSKB:

Code:
package helloworld.de.main;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FocusTest extends JFrame implements FocusListener {

	private JButton changeFocus = null;
	private JPanel pane1 = null;
	private JPanel pane2 = null;
	
	private int lastPane = 1;
	
	public static void main(String[] args) {
		FocusTest focus = new FocusTest();
		focus.setSize(400, 200);
		focus.setVisible(true);
		focus.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public FocusTest() {
		
		pane1 = new JPanel();
		pane2 = new JPanel();
		changeFocus = new JButton("move");
		pane1.setPreferredSize(new Dimension(200, 150));
		pane2.setPreferredSize(new Dimension(200, 150));
		pane2.setBackground(Color.BLACK);
		add(pane1, BorderLayout.WEST);
		add(pane2, BorderLayout.EAST);
		add(changeFocus, BorderLayout.SOUTH);
		pane1.addFocusListener(this);
		pane2.addFocusListener(this);
		changeFocus.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				if (lastPane==1) {
					pane2.requestFocusInWindow();
					lastPane=2;
				}
				else {
					pane1.requestFocusInWindow();
					lastPane=1;
				}
			}
		});
	}
	
	public void focusGained(FocusEvent arg0) {
		
		if (arg0.getSource() == pane1) {
			System.out.println("pane1");
		}
		else if (arg0.getSource() == pane2) {
			System.out.println("pane2");
		}
	}

	public void focusLost(FocusEvent arg0) {
		// TODO Auto-generated method stub

	}

}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben