warum kann ich das focus event nicht abfangen ?

hubertk

Mitglied
Moin.

Folgendes Problem :
folgendes Panel binde ich in eine TabbedPane ein :
Java:
public class StartPanel extends JPanel {

	private static final long serialVersionUID = -301077584623686703L;

	int width, height;
	Image image = Toolkit.getDefaultToolkit().getImage("C:\\\\logo_1.jpg");
	MyLogo lLogo = new MyLogo(new ImageIcon(image));

	private class MyLogo extends JLabel {
		public MyLogo(ImageIcon imageIcon) {
			super(imageIcon);
		}

		private static final long serialVersionUID = -6983180166624796952L;

		@Override
		protected void processFocusEvent(FocusEvent e) {
			super.processFocusEvent(e);
			if (e.getID() == FocusEvent.FOCUS_GAINED) {
				System.out.println("focus gained");
			}
		}
	}

	private class MyMouseMotionListener implements MouseMotionListener {

		public void mouseDragged(MouseEvent e) {

			if (e.getSource() == lLogo) {
				setLogoPosition(e);
			}
		}

		private void setLogoPosition(MouseEvent e) {
			int neux = lLogo.getLocation().x + e.getX();
			int neuy = lLogo.getLocation().y + e.getY();
			lLogo.setLocation(neux, neuy);
		}

		public void mouseMoved(MouseEvent e) {
			Graphics g = getGraphics();
			g.setColor(new Color(255, 0, 0));
			g.drawRect(0, 0, 3, 3);
			repaint();
		}
	}

	public StartPanel() {
		super();

		setLayout(null);
		lLogo.setBounds(0, 0, image.getWidth(null), image.getHeight(null));
		lLogo.setBorder(BorderFactory.createLineBorder(new Color(255, 0, 0)));
		lLogo.addMouseMotionListener(new MyMouseMotionListener());
		add(lLogo);
	}

es wird aber nicht in die processFocusEvent von MyLogo gesprungen.
Habe ich Tomaten auf den Augen ??

LG
 

hubertk

Mitglied
ich möchte einen kleinen Layout-editor schreiben, der die Möglichkeit bietet die Elemente per Maus direkt zu verschieben.
das funktioniert auch schon ganz gut aber ich möchte noch einen visuellen hinweis geben, wenn die Maus über das zu verschiebende Element fährt und dann ein kleines rotes rechteck in die linke obere ecke zeichnen.

LG

ps: ich habe setFocusable(true) versucht. Leider aber immer noch ohne erfolg.
 

KrokoDiehl

Top Contributor
Es gibt noch die Methode
Code:
setRequestFocusEnabled()
, ggfs auch mal auf true setzen und mit einem FocusListener arbeiten, anstelle dieser
Code:
process
-Methode.
Außerdem...
aber ich möchte noch einen visuellen hinweis geben, wenn die Maus über das zu verschiebende Element fährt
... klingt für mich nach Tooltip. Würde so einer nicht genügen?
 

hubertk

Mitglied
habe den code wie folgt noch mal umgeschrieben :
Java:
public class StartPanel extends JPanel {

	private static final long serialVersionUID = -301077584623686703L;

	Image image = Toolkit.getDefaultToolkit().getImage("C:\\\\logo_1.jpg");
	MyLogo lLogo = new MyLogo(new ImageIcon(image));

	private class MyLogo extends JLabel implements FocusListener {
		private static final long serialVersionUID = -6983180166624796952L;

		public MyLogo(ImageIcon imageIcon) {
			super(imageIcon);
			setText("öasojdfsa");
			setFocusable(true);
			setRequestFocusEnabled(true);
			addFocusListener(this);
		}

		@Override
		public void focusGained(FocusEvent paramFocusEvent) {
			System.out.println("focusGained");
		}

		@Override
		public void focusLost(FocusEvent paramFocusEvent) {
			System.out.println("focusLost");
		}
	}

	int width, height;

	private class MyMouseMotionListener implements MouseMotionListener {

		public void mouseDragged(MouseEvent e) {

			if (e.getSource() == lLogo) {
				setLogoPosition(e);
			}
		}

		private void setLogoPosition(MouseEvent e) {
			int neux = lLogo.getLocation().x + e.getX();
			int neuy = lLogo.getLocation().y + e.getY();
			lLogo.setLocation(neux, neuy);
		}

		public void mouseMoved(MouseEvent e) {
			Graphics g = getGraphics();
			g.setColor(new Color(255, 0, 0));
			g.drawRect(0, 0, 3, 3);
			repaint();
		}
	}

	public StartPanel() {
		super();

		// setLayout(null);
		lLogo.setBounds(0, 0, image.getWidth(null), image.getHeight(null));
		lLogo.setBorder(BorderFactory.createLineBorder(new Color(255, 0, 0)));
		lLogo.addMouseMotionListener(new MyMouseMotionListener());
		add(lLogo);
	}

leider immer noch ohne ERfolg.
@KrokoDiehl :

Ja, ein Tooltip würde es auch tun;
aber ich will einfach auch verstehen, warum ich es so nicht hinbekomme und mein wissensdurst stillen ;)
 

Michael...

Top Contributor
Mir ist zwar immer noch nicht klar, was Du damit bezweckst.
So wie der Code momentan aussieht, sollte die Komponente per Tabulatortaste fokusierbar sein.
Wenn die Komponente auch noch per Mausclick den Fokus anfordern soll, musst Du das entsprechend implementieren:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class FocusDemo extends JFrame {

	public FocusDemo() {
		this.getContentPane().add(new JTextField(), BorderLayout.NORTH);
		this.getContentPane().add(new MyLogo(), BorderLayout.CENTER);
	}

	class MyLogo extends JLabel implements FocusListener {

		public MyLogo() {
			super("Click Me", JLabel.CENTER);
			setOpaque(true);
			setBackground(Color.CYAN);
			setFocusable(true);
			addFocusListener(this);
			addMouseListener(new MouseAdapter() {
				public void mouseClicked(MouseEvent e) {
					requestFocusInWindow();
				}
			});
		}

		public void focusGained(FocusEvent paramFocusEvent) {
			this.setText("focus gained");
		}

		public void focusLost(FocusEvent paramFocusEvent) {
			this.setText("focus lost");
		}
	}

	public static void main(String[] args) {
		JFrame frame = new FocusDemo();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBounds(0, 0, 300, 300);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Focus auf titledborder AWT, Swing, JavaFX & SWT 8
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
xYurisha Gui Focus von JTextField weglenken AWT, Swing, JavaFX & SWT 6
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
T bekomme keinen Focus auf JTextField AWT, Swing, JavaFX & SWT 3
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T SWT Button soll nur sichbar sein,wenn im Textfeld der Focus ist AWT, Swing, JavaFX & SWT 4
B Swing JTextfeld bekommt nur jedes Zweite mal Focus AWT, Swing, JavaFX & SWT 11
E JTextPane Focus AWT, Swing, JavaFX & SWT 1
D ComboBoxCellEditor Refresh beim Focus AWT, Swing, JavaFX & SWT 4
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
A Focus Problem AWT, Swing, JavaFX & SWT 4
I focus an ein jdialog geben AWT, Swing, JavaFX & SWT 3
B JInternalFrame Focus setzten geht nicht AWT, Swing, JavaFX & SWT 2
A Swing Focus auf gemalte Component AWT, Swing, JavaFX & SWT 5
H Swing JTextField in JWindow, JWindow bekommt focus zurück? AWT, Swing, JavaFX & SWT 9
M Swing Focus für Buttons deaktiviert --> keine Reaktion mehr auf Tastendrücke AWT, Swing, JavaFX & SWT 5
M focus subFrame AWT, Swing, JavaFX & SWT 3
G Force Focus für JButton AWT, Swing, JavaFX & SWT 2
lumo SWT Composite Focus AWT, Swing, JavaFX & SWT 2
T disabled Checkbox soll trotzdem Focus bekommen AWT, Swing, JavaFX & SWT 9
C Swing Focus Management AWT, Swing, JavaFX & SWT 3
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
H Swing Focus bekommen AWT, Swing, JavaFX & SWT 4
D Swing keine Tabellen Zeilen ohne Focus AWT, Swing, JavaFX & SWT 7
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
L AWT Focus auf Fenster setzen AWT, Swing, JavaFX & SWT 4
L Swing Input Focus eines JTextFields in einer JList AWT, Swing, JavaFX & SWT 2
A Focus in JTable Cell AWT, Swing, JavaFX & SWT 3
A Focus für JApplet AWT, Swing, JavaFX & SWT 7
R Focus ermitteln AWT, Swing, JavaFX & SWT 2
C JTable Focus Handling AWT, Swing, JavaFX & SWT 2
Nitram Swing Focus im JFrame AWT, Swing, JavaFX & SWT 10
I Swing Focus Listener bei PComboBox von pswing Erweiterung AWT, Swing, JavaFX & SWT 7
V Swing Problem mit Focus setzen AWT, Swing, JavaFX & SWT 7
thE_29 Swing JTabbedPane Focus von Komponenten außerhalb AWT, Swing, JavaFX & SWT 10
B JTable getselectedrow liefert -1 wenn Focus verloren AWT, Swing, JavaFX & SWT 4
S Versuch den Focus zu klauen detektieren? AWT, Swing, JavaFX & SWT 14
SebSnake JFrame "Focus" erzwingen (wie JOptionPane) AWT, Swing, JavaFX & SWT 3
V JTabbedPane - keine "Focus"-Box auf selektiertem T AWT, Swing, JavaFX & SWT 2
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2
O Focus im GBL steuern. AWT, Swing, JavaFX & SWT 3
K Focus an das JPanel übergeben AWT, Swing, JavaFX & SWT 2
K Focus-Problem AWT, Swing, JavaFX & SWT 9
O TextBoxen Focus über Pfeiltasten steuern AWT, Swing, JavaFX & SWT 3
G Problene mt Focus unter Swing AWT, Swing, JavaFX & SWT 7
G JTable und Focus AWT, Swing, JavaFX & SWT 30
D Beim Starten ein JTextfield Focus geben AWT, Swing, JavaFX & SWT 7
J JTextPane bekommt keinen Focus! AWT, Swing, JavaFX & SWT 3
P TextFeld Focus entfernen AWT, Swing, JavaFX & SWT 2
F Problem mit Actions, TextComponents und Focus AWT, Swing, JavaFX & SWT 2
K Focus mit Mouseclick auf JPanel setzen AWT, Swing, JavaFX & SWT 4
D Focus auf JPanel setzen AWT, Swing, JavaFX & SWT 2
B JTable - Focus - TabTaste AWT, Swing, JavaFX & SWT 2
D Focus in bestimmter Celle in JTable AWT, Swing, JavaFX & SWT 3
B Komponente in JTable bekommt keinen Focus AWT, Swing, JavaFX & SWT 3
M Focus beim öffnen eines neuen JFrames AWT, Swing, JavaFX & SWT 6
O JTextField- Selection / Focus bei nicht editierbaren Feldern AWT, Swing, JavaFX & SWT 2
J Focus auf JFrame AWT, Swing, JavaFX & SWT 3
B Focus für Textfeld AWT, Swing, JavaFX & SWT 5
B im JTree Focus setzen und navigieren AWT, Swing, JavaFX & SWT 3
B JInternalFrame in den Vordergrund rücken + Focus AWT, Swing, JavaFX & SWT 15
D JTable: Focus auf Zelle markiert ihren Text zum editieren AWT, Swing, JavaFX & SWT 2
C Komponente mit Focus bevor JButton-Klick merken. AWT, Swing, JavaFX & SWT 6
L Focus setzen AWT, Swing, JavaFX & SWT 3
G JTabbedPane, Focus, ChangeListener AWT, Swing, JavaFX & SWT 1
B Focus in JOptionPane AWT, Swing, JavaFX & SWT 2
J Focus-Problem bei Vollbildmodus AWT, Swing, JavaFX & SWT 7
A Combobox Focus-Events, Tab in Tabelle AWT, Swing, JavaFX & SWT 7
F Fenster in den Vordergrund aber nicht im Focus AWT, Swing, JavaFX & SWT 21
O Abfrage ob eine bstimmte Komponente den Focus hat AWT, Swing, JavaFX & SWT 4
T JTable Focus auf Zelle setzen AWT, Swing, JavaFX & SWT 3
R Focus durch "tabben" von JTable Zelle auf andere K AWT, Swing, JavaFX & SWT 8
R Focus speeren AWT, Swing, JavaFX & SWT 2
K JList - merkwürdiges Verhalten bei Leertaste (unter Focus) AWT, Swing, JavaFX & SWT 7
W Components Focus mit TAB-Taste VERTIKAL bewegen AWT, Swing, JavaFX & SWT 4
V JTextField Focus Cursor setzen AWT, Swing, JavaFX & SWT 2
D jcolorchooser - lost focus AWT, Swing, JavaFX & SWT 2
R Focus auf bereits geöffnetes Fenster setzen AWT, Swing, JavaFX & SWT 9
O Welche Möglichkeit zum Focus setzen! AWT, Swing, JavaFX & SWT 2
R JMenu copy Focus-Problem AWT, Swing, JavaFX & SWT 2
M Focus einstellen AWT, Swing, JavaFX & SWT 3
G Focus so setzen, daß in einer jTextArea der Cursor blinkt AWT, Swing, JavaFX & SWT 7
G JTable: Rahmen bei Focus um Zelle AWT, Swing, JavaFX & SWT 2
thE_29 Modaler Dialog - close on not focus AWT, Swing, JavaFX & SWT 3
P Focus auf JFrame AWT, Swing, JavaFX & SWT 5
G JOptionPane verliert Focus AWT, Swing, JavaFX & SWT 3
A JTree Problem mit Focus bzw. Selection AWT, Swing, JavaFX & SWT 5
C Focus setzen AWT, Swing, JavaFX & SWT 2
G JTree Focus setzen AWT, Swing, JavaFX & SWT 2
F HILFE!!! Focus-Probleme bei unterschiedlichen Panel's AWT, Swing, JavaFX & SWT 3
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
G Mouse Event in anderemm Event auslösen AWT, Swing, JavaFX & SWT 50
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben