Avatar billede mungojerrie Nybegynder
28. oktober 2004 - 09:25 Der er 2 kommentarer og
1 løsning

KeyEvent og KeyListener

Hej

Jeg har en klasse som extender JDialog som jeg bruger til mange af mine grænseflader, da jeg så altid har en OK og en CANCEL button. Nu vil jeg så gerne have en keylistener på som reagerer på ENTER tasten, altså skal OK knappen reagerer på ENTER og CANCEL skal reagere på ESC tasten

Mit setup ser sådan ud:


import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ModalContainer extends JDialog {
   
    private JButton close;
    private JButton cancel;
   
    public ModalContainer(JFrame f, JComponent jc, String title) {
        this(f, jc, title, "OK", null);
    }
   
    public ModalContainer(JFrame f, JComponent jc, String title, String okStr, String cancelStr) {
        super(f, true);
        setResizable(false);
        setTitle(title);
       
        getContentPane().setLayout(new BorderLayout(0,0));
       
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
       
        JPanel buttonPane = new JPanel(new FlowLayout());
       
        close = new JButton(okStr);
        buttonPane.add(close);
        if (cancelStr != null) {
            cancel = new JButton(cancelStr);
            buttonPane.add(cancel);
        }
       
        getContentPane().add(buttonPane, BorderLayout.SOUTH);
       
        close.addActionListener (
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        if (okActivated()) hide();
                    }
                }
        );
       
        if (cancelStr != null) {
            cancel.addActionListener (
                    new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            if (cancelActivated()) hide();
                        }
                    }
            );
        }
       
        if (jc != null) setComponent(jc);

-->        close.addKeyListener(this);
-->        cancel.addKeyListener(this);

    }
   
    public boolean okActivated() { return true; }
    public boolean cancelActivated() { return true; }
   
    public void setComponent(JComponent jc) {
        getContentPane().add(jc, BorderLayout.CENTER);
        pack();
       
        Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension dsize = getSize();
        setLocation((size.width - dsize.width)/2, (size.height - dsize.height)/2);
       
        show();
    }
}
------------------------------------------------


public class GroupPanel extends ModalContainer {
   
 
    public GroupPanel(JFrame f, CustomerGroup customerGroup){
        super(f, null, "C_CREATE_PANEL_TITLE", "OK", "CANCEL");
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setResizable(false);
        pack();
        Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension dsize = getPreferredSize();
        setLocation((size.width - dsize.width) / 2, (size.height - dsize.height) / 2);
    }
   
   
    public boolean okActivated() { return true; System.out.println("TEST");  }
   
    public boolean cancelActivated() {return true;}   
}
-----------------------

Burde min grouppanel så ikke reagere på ENTER knappen sådan uden videre eller tager jeg fejl ?
Avatar billede Slettet bruger
28. oktober 2004 - 09:35 #1
Her er en artikel der omhandler hvordan du får en hel frame (eller dialog i dit tilfælde) til at reagere på nogle tastetryk....

http://www.javaworld.com/javaworld/javatips/jw-javatip69.html
Avatar billede mungojerrie Nybegynder
28. oktober 2004 - 10:08 #2
fedt, smid lige et svar for den artikel, det var jo lige hvad jeg havde brug for.....:-)
Avatar billede Slettet bruger
28. oktober 2004 - 10:19 #3
svar :-)

Takker for point...
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