Hi,
ich wollte mir einen Button bauen, der speziell hervorgehoben wird, wenn er den Focus hat und auf Spezielle Events reagiert. Leider funktioniert weder das eine noch das andere - Es passiert nada.
Hier mal mein Code. Vielleicht erkennt ja jemand von euch den Fehler.
Danke schonmal im vorraus. :wink:
Ariol
ich wollte mir einen Button bauen, der speziell hervorgehoben wird, wenn er den Focus hat und auf Spezielle Events reagiert. Leider funktioniert weder das eine noch das andere - Es passiert nada.
Hier mal mein Code. Vielleicht erkennt ja jemand von euch den Fehler.
Danke schonmal im vorraus. :wink:
Ariol
Code:
package test;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
public class SpecialButton extends JButton implements KeyListener, FocusListener
{
SpecialPanel specialPanel;
boolean selected = false;
public SpecialButton(final SpecialPanel specialPanel, String text)
{
super(text);
this.specialPanel = specialPanel;
}
public void keyPressed(KeyEvent e)
{
System.err.println(e);
if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
{
specialPanel.back();
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT)
{
specialPanel.next();
} else if (e.getKeyCode() == KeyEvent.VK_LEFT)
{
specialPanel.previous();
}
else if (e.getKeyCode() == KeyEvent.VK_ENTER)
{
specialPanel.forward();
}
}
public void keyReleased(KeyEvent e)
{
System.err.println(e);
}
public void keyTyped(KeyEvent e)
{
System.err.println(e);
}
public void focusGained(FocusEvent e)
{
selected = true;
repaint();
}
public void focusLost(FocusEvent e)
{
selected = false;
repaint();
}
@Override
public void paintComponents(Graphics g)
{
super.paintComponents(g);
if (selected)
{
g.setColor(Color.red);
g.drawLine(0, 0, getWidth(), getHeight());
}
}
}