Avatar billede s_mohr Nybegynder
19. marts 2003 - 15:34 Der er 7 kommentarer og
1 løsning

Implementering af ActionListener og KeyListener

Har en GUI klasse som implementere ActionListener, men jeg vil også gerne implementere en KeyListener.
Kan man det, eller er jeg nødt til at lave en separat klasse?
Avatar billede arne_v Ekspert
19. marts 2003 - 15:36 #1
Ja du kan sagtens implementere 2 interfaces i samme klasse.
Avatar billede arne_v Ekspert
19. marts 2003 - 15:36 #2
public class X implements Y,Z {
}
Avatar billede arne_v Ekspert
19. marts 2003 - 15:38 #3
[og skal naturligvis implementere metoderne fra begge interfaces]
Avatar billede soreno Praktikant
19. marts 2003 - 15:50 #4
Jeg plejer at bruge dette som skabelon når jeg arbejder med (simple) swing ting - måske du kan bruge noget af det i dit eget program:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TestKlasseSwing extends JFrame implements ActionListener, KeyListener, WindowListener
{
    private int frameWidth = 640;
    private int frameHeight = 480;

    public TestKlasseSwing()
    {
        createFrame();
    }

    private void createFrame()
    {
        setTitle("TestKlasseSwing");
        setResizable(false);
        addWindowListener(this);
        addKeyListener(this);

        //components

        //Center Frame
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setSize(new java.awt.Dimension(frameWidth, frameHeight));
        setLocation( (screenSize.width-this.getWidth()) / 2, (screenSize.height - this.getHeight()) / 2);
    }

    public void windowOpened(WindowEvent e){}
    public void windowClosing(WindowEvent e){ shutdown();}
    public void windowClosed(WindowEvent e){}
    public void windowIconified(WindowEvent e){}
    public void windowDeiconified(WindowEvent e){}
    public void windowActivated(WindowEvent e){}
    public void windowDeactivated(WindowEvent e){}

    public void actionPerformed(ActionEvent e){}

    public void keyTyped(KeyEvent e){}
    public void keyReleased(KeyEvent e){}
    public void keyPressed(KeyEvent e)
    {
        if(e.getKeyCode() == KeyEvent.VK_ESCAPE)
        {
            shutdown();
        }
    }
       
    private void shutdown()
    {
        dispose();
        System.exit(0);
    }
}

class Main
{
    public static void main(String args[])
    {
        new TestKlasseSwing().show();
    }
}
Avatar billede s_mohr Nybegynder
19. marts 2003 - 16:01 #5
Hele fidusen er at jeg ved índtastning i nogle udvalgte JTextFields vil slette teksten i nogle udvalgte JTextAreas.
Kan man tilføje en keyPressed eller noget andet til et JTextField, og på den måde registrere når der bliver tastet i det?
Avatar billede soreno Praktikant
19. marts 2003 - 16:05 #6
Mon det er smartere at tilføje en actionListener til JTextFields'ene ?

Altså, noget ala:
JTextField jtf = new JTextField();
jtl.addActionListener(this);


Men mit kendskab til swing er ret begrænset - måske en anden har en bedre løsning  ?
Avatar billede s_mohr Nybegynder
19. marts 2003 - 17:32 #7
Jo, men den registrere kun når der trykkes return, og ikke når der skrives noget.
Problemet er at teksten i JTextArea'et skal fjernes så snart der tastes i JTextField'et?
Avatar billede s_mohr Nybegynder
19. marts 2003 - 17:50 #8
Så virker det.
Det var vist egentlig arne v der svarede på det oprindelige spørgsmål.
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