Hallo,
ich habe zu dem Thema hier im Forum schon gesucht aber keine Lösung gefunden die funktioniert hat. Mein Problem: Ich habe einen JFrame mit zwei Pannels und ich würde gerne mit einem Mausklick dem jeweils angeklickten JPanel den Fokus geben und dem anderen nehmen.
Ich könnte das Ganze auch mit einem MouseListener erledigen aber dachte mir das wäre besser mit einem FocusListener - nur dass es eben nicht geht. Hier etwas Beispiel-Code:
Das müsste doch eigentlich gehen oder?
ich habe zu dem Thema hier im Forum schon gesucht aber keine Lösung gefunden die funktioniert hat. Mein Problem: Ich habe einen JFrame mit zwei Pannels und ich würde gerne mit einem Mausklick dem jeweils angeklickten JPanel den Fokus geben und dem anderen nehmen.
Ich könnte das Ganze auch mit einem MouseListener erledigen aber dachte mir das wäre besser mit einem FocusListener - nur dass es eben nicht geht. Hier etwas Beispiel-Code:
Java:
package de.dstrohma.jintanotes.test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Label;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PanelFocusTest extends JFrame implements FocusListener {
JPanel panelRED, panelGREEN;
public static void main(String[] args) {
new PanelFocusTest();
}
public PanelFocusTest() {
setSize(300, 200);
setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
panelRED = new JPanel();
panelRED.setLayout(new BorderLayout());
panelRED.setBorder(BorderFactory.createLineBorder(Color.RED));
panelRED.setFocusable(true);
panelRED.addFocusListener(this);
panelRED.add(new Label("Dies ist ein Fokus Test. Sieht nicht gut aus..."));
add(panelRED, BorderLayout.NORTH);
panelGREEN = new JPanel();
panelGREEN.setLayout(new BorderLayout());
panelGREEN.setBorder(BorderFactory.createLineBorder(Color.GREEN));
panelGREEN.setFocusable(true);
panelGREEN.addFocusListener(this);
panelGREEN.add(new Label("Dies ist ein Fokus Test. Sieht nicht gut aus..."));
add(panelGREEN, BorderLayout.SOUTH);
setVisible(true);
}
@Override
public void focusGained(FocusEvent e) {
if (e.getSource() == panelRED) {
System.out.println("RED: focus da");
}
if (e.getSource() == panelGREEN) {
System.out.println("GREEN: focus da");
}
}
@Override
public void focusLost(FocusEvent e) {
if (e.getSource() == panelRED) {
System.out.println("RED: focus weg");
}
if (e.getSource() == panelGREEN) {
System.out.println("GREEN: focus weg");
}
}
}
Das müsste doch eigentlich gehen oder?