Hvordan Registrerer jeg en event: Keyboardpressed keyboardreleased
Som titel.Kan ikke se hvorfor dette ikke fungerer. Musens bevægelser vises fint nok, men keyboard tryk registreres ikke. eller den event jeg vil have til at ske, sker ikke ihvertfald. (Skal ændre baggrundsfarven på en knap)
Først følger main-metoden og dernæst separat selve program classen.
import javax.swing.JFrame;
public class Opg_14_10_TEST
{
public static void main(String[]args)
{
Opg_14_10 displayEvents = new Opg_14_10();
displayEvents.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
displayEvents.setVisible(true);
displayEvents.setAlwaysOnTop(true);
displayEvents.setSize(500, 500);
}
}
// Selve program classen.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Opg_14_10 extends JFrame
{
private JButton mouseClick, keyClick;
private JTextField textfield1; // Viser musens position.
public Opg_14_10()
{
super ("Displaying events");
setLayout(null);
textfield1 = new JTextField();
textfield1.setBounds(10, 60, 200, 20);
textfield1.setEditable(false);
add ( textfield1 );
mouseClick = new JButton("Left click on mouse");
mouseClick.setBounds(50, 10, 150, 40);
add ( mouseClick );
keyClick = new JButton("Press a key");
keyClick.setBounds(220, 10, 130, 40);
keyClick.setBackground(Color.red);
add( keyClick );
addMouseMotionListener(new MouseMotionListener() );
addKeyListener(new keyPressedListener());
}
private class MouseMotionListener extends MouseAdapter
{
@Override
public void mouseMoved(MouseEvent e)
{
textfield1.setText(e.getPoint().toString());
}
}
private class keyPressedListener extends KeyAdapter
{
Color bgColor;
@Override
public void keyPressed(KeyEvent e)
{
bgColor = keyClick.getBackground();
keyClick.setBackground(Color.blue);
}
@Override
public void keyReleased(KeyEvent e)
{
keyClick.setBackground(bgColor);
}
}
}