Avatar billede karsten_nymann Nybegynder
15. december 2002 - 12:56 Der er 5 kommentarer og
2 løsninger

KeyListener

Lidt hjælp til en stakkels nybegynder :-)

jeg har en knap når jeg klikker på udfører den en kode, jeg vil gerne have at når jeg trykker på højre piletast så udfører den samme kode, jeg har prøvet at lægge den i actionPerformed.

hvor lægger jeg denn kode:

    if (e.getKeyCode() == KeyEvent.VK_RIGHT)
      {
    kode
      }

Applet:

public class test extends Applet implements MouseListener, MouseMotionListener, KeyListener, ActionListener, ........

{
    public void actionPerformed(ActionEvent e)
    {
      Object object = e.getSource();
      if (object == knapFrem)
        {
    kode
    }
    }


    public void mouseClicked(MouseEvent e) { }
    public void mouseEntered(MouseEvent e) { }
    public void mouseExited(MouseEvent e)  { }
osv....
    public void keyReleased(KeyEvent e){}
    public void keyTyped(KeyEvent e){}
    public void keyPressed(KeyEvent e) {}
....
}

....
Avatar billede aslan Nybegynder
15. december 2002 - 13:15 #1
public void keyPressed(KeyEvent e)
    {
        if (e.getKeyCode() == KeyEvent.VK_RIGHT)
        {
            kode
        }


    }
    public void keyReleased(KeyEvent e)
    {

    }
    public void keyTyped(KeyEvent e){}
Avatar billede karsten_nymann Nybegynder
15. december 2002 - 13:32 #2
Det troede jeg egentlig også, men der sker ikke en sk.. når jeg trykker på højre piletast?
Avatar billede arne_v Ekspert
15. december 2002 - 15:14 #3
Har du en:
  addKeyListener(this);
i din kode ?

(det er ikke nok at implementere KeyListener - du skal også
fortælle at den skal bruge det !)
Avatar billede karsten_nymann Nybegynder
15. december 2002 - 16:22 #4
Ja, det har jeg.
Et enkelt eksempel der virker ville måske hjælpe.
Avatar billede aslan Nybegynder
15. december 2002 - 16:23 #5
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class LommeRegner extends JFrame implements ActionListener,KeyListener,FocusListener
{
    Container panel = getContentPane();
   
    JTextArea felt;
    JScrollPane scroller;
    JTextField skriveFelt1,skriveFelt2;
    JButton plus,minus,gange,dividere;
    JLabel label;
    double ialt=0;
   
    public LommeRegner()
    {
        panel.setLayout(null);
       
        felt = new JTextArea();
        scroller = new JScrollPane(felt);
        scroller.setBounds(10,10,375,200);
        felt.setEditable(false);
        panel.add(scroller);
       
        skriveFelt1 = new JTextField();
        skriveFelt1.setBounds(105,220,80,20);
        skriveFelt1.addActionListener(this);
        skriveFelt1.addKeyListener(this);
        panel.add(skriveFelt1);
       
        skriveFelt2 = new JTextField();
        skriveFelt2.setBounds(205,220,80,20);
        skriveFelt2.addActionListener(this);
        skriveFelt2.addKeyListener(this);
        panel.add(skriveFelt2);   
       
        plus = new JButton("Plus");
        plus.setFont(new Font("Arial",Font.BOLD,12));
        plus.setBounds(40,280,70,20);
        plus.addActionListener(this);
        plus.addKeyListener(this);
        plus.addFocusListener(this);
        panel.add(plus);
       
        minus = new JButton("Minus");   
        minus.setBounds(120,280,70,20);
        minus.setFont(new Font("Arial",Font.BOLD,12));
        minus.addActionListener(this);
        minus.addKeyListener(this);
        minus.addFocusListener(this);
        panel.add(minus);
       
        gange = new JButton("Gange");   
        gange.setBounds(200,280,70,20);
        gange.setFont(new Font("Arial",Font.BOLD,12));
        gange.addActionListener(this);
        gange.addKeyListener(this);
        gange.addFocusListener(this);
        panel.add(gange);   
       
        dividere = new JButton("Dividere");   
        dividere.setBounds(280,280,80,20);
        dividere.setFont(new Font("Arial",Font.BOLD,12));
        dividere.addActionListener(this);
        dividere.addKeyListener(this);
        dividere.addFocusListener(this);
        panel.add(dividere);
       
        label = new JLabel("created by Erol Eskici 2002");
        label.setBounds(278,364,120,10);
        label.setFont(new Font("Arial",Font.PLAIN,9));
        panel.add(label);
                   
               
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                dispose();
                System.exit(0);
            }
        });
    }
    public void addNotify()
    {
      super.addNotify();
      skriveFelt1.requestFocus();
    }   
///////////////////////KEYLISTENER//////////////////////////////////////////////
    public void keyPressed(KeyEvent e)
    {
        if(e.getKeyCode() == 8)
        {
            String nyString="";
                   
            int tal = skriveFelt1.getText().length();
                   
            for(int i=0;i<(tal-1);i++)
            {
                nyString +=  skriveFelt1.getText().charAt(i);
            } 
            skriveFelt1.setText(nyString);
        }
        if(e.getKeyCode() == 8)
        {
            String nyString="";
                   
            int tal = skriveFelt2.getText().length();
                   
            for(int i=0;i<(tal-1);i++)
            {
                nyString +=  skriveFelt2.getText().charAt(i);
            } 
            skriveFelt2.setText(nyString);
        }
        if(e.getSource() == skriveFelt1)
        {
            if(e.getKeyCode() == 39)//pil frem
            {
                skriveFelt2.selectAll();   
                skriveFelt2.requestFocus();
            }
            if(e.getKeyCode() == 40)//pil ned
            {                   
                plus.requestFocus();
            }    
            if(e.getKeyCode() == 38)//pil op
            {                   
                skriveFelt1.setText(""+ialt);
            }                        
        }
        if(e.getSource() == skriveFelt2)
        {
            if(e.getKeyCode() == 37)//pil tilbage
            {
                skriveFelt1.selectAll();   
                skriveFelt1.requestFocus();
            }
            if(e.getKeyCode() == 40)//pil ned
            {                   
                dividere.requestFocus();
            }            
        }   
        if(e.getSource() == plus)
        {
            if(e.getKeyCode() == 39)//pil frem
            {
                   
                minus.requestFocus();
            }
            if(e.getKeyCode() == 38)//pil op
            {                   
                skriveFelt1.selectAll();   
                skriveFelt1.requestFocus();
            }            
        }   
        if(e.getSource() == minus)
        {
            if(e.getKeyCode() == 39)//pil frem
            {
                   
                gange.requestFocus();
            }
            if(e.getKeyCode() == 37)//pil tilbage
            {
                   
                plus.requestFocus();
            }            
            if(e.getKeyCode() == 38)//pil op
            {                   
                skriveFelt1.selectAll();   
                skriveFelt1.requestFocus();
            }            
        }
        if(e.getSource() == gange)
        {
            if(e.getKeyCode() == 39)//pil frem
            {
                   
                dividere.requestFocus();
            }
            if(e.getKeyCode() == 37)//pil tilbage
            {
                   
                minus.requestFocus();
            }            
            if(e.getKeyCode() == 38)//pil op
            {                   
                skriveFelt2.selectAll();   
                skriveFelt2.requestFocus();
            }            
        }
        if(e.getSource() == dividere)
        {

            if(e.getKeyCode() == 37)//pil tilbage
            {
                   
                gange.requestFocus();
            }            
            if(e.getKeyCode() == 38)//pil op
            {                   
                skriveFelt2.selectAll();   
                skriveFelt2.requestFocus();
            }            
        }                                                               
    }   
    public void keyReleased(KeyEvent e)
    {}
    public void keyTyped(KeyEvent e)
    {
        if(e.getSource() == skriveFelt1)
        {
            char knap = e.getKeyChar();
               
            if(Character.isDigit(knap))return;     
            else e.consume();
               
        }
        if(e.getSource() == skriveFelt2)
        {
            char knap = e.getKeyChar();
               
            if(Character.isDigit(knap))return;     
            else e.consume();
               
        }       
    }
   
// //////////////////////////////////FOCUSEVENT/////////////////////////////////////
    public void focusGained(java.awt.event.FocusEvent fe)
    {
        Object source = fe.getSource();

        if (source == plus)
        {
            plus.setForeground(Color.red);           
        }
        if ( source == minus)
        {
            minus.setForeground(Color.red);   
        } 
        if ( source == gange)
        {
            gange.setForeground(Color.red);   
        }             
        if ( source == dividere)
        {
            dividere.setForeground(Color.red);   
        }
        if ( source == felt)
        {
            skriveFelt1.requestFocus();
        } 
    }
   
    public void focusLost(java.awt.event.FocusEvent fe)
    {
        Object source = fe.getSource();
        if ( source == plus)
        {
            plus.setForeground(Color.black);
        }
        if ( source == minus)
        {
            minus.setForeground(Color.black);
        } 
        if ( source == gange)
        {
            gange.setForeground(Color.black);
        }             
        if ( source == dividere)
        {
            dividere.setForeground(Color.black);
        }
                   
    }   
   
//////////////////////ACTIONLISTENER////////////////////////////////////////////   
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==plus && skriveFelt1.getText().length() != 0 && skriveFelt2.getText().length() != 0)
        {
            double felt1 = Double.parseDouble(skriveFelt1.getText());
            double felt2 = Double.parseDouble(skriveFelt2.getText());
            ialt = felt1+felt2;
           
            felt.append(" "+felt1+" + "+felt2+" = "+ialt+"\n");
            skriveFelt1.setText("");
            skriveFelt2.setText("");
            skriveFelt1.requestFocus();           
        }
        if(e.getSource()==minus && skriveFelt1.getText().length() != 0 && skriveFelt2.getText().length() != 0)
        {
            double felt1 = Double.parseDouble(skriveFelt1.getText());
            double felt2 = Double.parseDouble(skriveFelt2.getText());
            ialt = felt1-felt2;
           
            felt.append(" "+felt1+" - "+felt2+" = "+ialt+"\n");
            skriveFelt1.setText("");
            skriveFelt2.setText("");
            skriveFelt1.requestFocus();           
        }
        if(e.getSource()==gange && skriveFelt1.getText().length() != 0 && skriveFelt2.getText().length() != 0)
        {
            double felt1 = Double.parseDouble(skriveFelt1.getText());
            double felt2 = Double.parseDouble(skriveFelt2.getText());
            ialt = felt1*felt2;
           
            felt.append(" "+felt1+" * "+felt2+" = "+ialt+"\n");
            skriveFelt1.setText("");
            skriveFelt2.setText("");
            skriveFelt1.requestFocus();
        }       
        if(e.getSource()==dividere && skriveFelt1.getText().length() != 0 && skriveFelt2.getText().length() != 0)
        {
            double felt1 = Double.parseDouble(skriveFelt1.getText());
            double felt2 = Double.parseDouble(skriveFelt2.getText());
            ialt = felt1/felt2;
           
            felt.append(" "+felt1+" / "+felt2+" = "+ialt+"\n");
            skriveFelt1.setText("");
            skriveFelt2.setText("");
            skriveFelt1.requestFocus();
        }               
    }

    public static void main(String[] aslan)
    {

        LommeRegner mainFrame = new LommeRegner();
        mainFrame.setBounds(300,150,400,400);
        mainFrame.setResizable(false);
        mainFrame.setTitle("LommeRegner");
        mainFrame.setVisible(true);
    }
}
Avatar billede aslan Nybegynder
15. december 2002 - 16:25 #6
I denne test klasse skulle der være det du skal bruge....
Avatar billede karsten_nymann Nybegynder
15. december 2002 - 16:31 #7
Undskyld det er mig der er idiot, jeg havde brugt venste piletast!
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