Avatar billede cvpcvp Nybegynder
10. februar 2004 - 13:18 Der er 1 kommentar og
1 løsning

Tjek af keyboard indtastning

Jeg har lavet et lille java program, for at lære lidt mere om java.

Jeg har fået mouseinput til at virke men jeg kan ikke få keyboardinput til at virke.

Dette er min kode forløbig:


public class JFrame extends javax.swing.JFrame {
   
    public JFrame() {
        initComponents();
    }

    private void initComponents() {
        panel = new javax.swing.JPanel();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        panel.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                tegn(evt);
            }
        });
        panel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                drag(evt);
            }
        });
        panel.addKeyListener(new java.awt.event.KeyListener() {
           
          public void keyReleased(java.awt.event.KeyEvent evt){
                key(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt){
                key(evt);
            }
            public void keyPressed(java.awt.event.KeyEvent evt) {
                key(evt);
            }
        });

        getContentPane().add(panel, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void drag(java.awt.event.MouseEvent evt) {
        int q = evt.getX();
        int w = evt.getY();
    }

    private void key(java.awt.event.KeyEvent evt) {
       
        if (evt.KEY_TYPED == 'a')
        {
            dddd += 0.01;
        }
        else if (evt.KEY_TYPED == 's')
        {
            dddd -= 0.01;
        } 
        System.out.println("hej");
        g = panel.getGraphics();
        g2 = (java.awt.Graphics2D)g;
     
        double tempx, tempy;
   

        int r = 100;

        tempx = ((java.lang.Math.sin(i)*r)+300);
        tempy = (300-(java.lang.Math.cos(i)*r));
        System.out.println(tempx);
        System.out.println(tempy);

        g2.drawLine(300 , 300, (int)tempx, (int)tempy);
       
    }

    private void tegn(java.awt.event.MouseEvent evt) {
    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new JFrame().show();
    }
     
    private javax.swing.JPanel panel;
    private java.awt.Graphics g;
    private java.awt.Graphics2D g2;
    private int x, y;
    private int i,j;
    private double dddd;
}

mit spørgsmål er følgende:
Der sker umiddelbart ikke noget ved tastaturintastninger. hvilke ændringer skal der til i kode for at det kommer til at virker?
Avatar billede _carsten Nybegynder
10. februar 2004 - 14:36 #1
Du skal tilføje din keyListener til din JFrame, ikke til dit panel

this.addKeyListener(new java.awt.event.KeyListener() {

og så skal du nok lige tilføje denne i din key()

g2.drawLine(300 , 300, (int)tempx, (int)tempy);
panel.paintComponents(g);
Avatar billede cvpcvp Nybegynder
10. februar 2004 - 15:00 #2
Tak det virker... jeg har lige lavet en lille ændring mere til de interesserede..
dette:
if (evt.KEY_TYPED == 'a')
        {
            dddd += 0.01;
        }
er blevet til dette:
if (evt.getKeyChar() == 'a')
{
  dddd += 0.1;
}
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