Avatar billede machholdt Nybegynder
03. november 2010 - 17:26 Der er 2 kommentarer og
1 løsning

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);
        }
    }
}
Avatar billede arne_v Ekspert
04. november 2010 - 18:47 #1
addKeyListener(new keyPressedListener());     

->

keyClick.addKeyListener(new keyPressedListener());     

vil nok hjælpe lidt.
Avatar billede machholdt Nybegynder
04. november 2010 - 20:04 #2
HEHE. Havde faktisk løst den ved at lave et textfield og så add'e en listener til det. Dog var det jo ikke meningen det skulle laves på den måde. Så kan være jeg skulle følge dit eksempel istedet.. Hmm. Har nu prøvet det.. Det ser ud til at virke.

Har du et trick til hvordan jeg får det til at virke uden at knappen skal have focus. Jeg vil have den til at ændre baggrundsfarve så snart jeg taster en tast på keyboardet. Jeg vil ikke først skulle klikke på knappen (Såp den får focus).

Hvis du har løsningen, kan du smide den i et svar :-)
Avatar billede arne_v Ekspert
22. november 2010 - 23:43 #3
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester