2

私は現在、基本的な変換を使用することになっている小さなプログラムを書いています。現在、矢印キーを使用してポリゴンを移動できるように取り組んでいます。現在、マウスを押して右に移動できますが、右矢印キーを使用できるようにしたいと考えています。しかし、どの方法を試してもできませんでした。

import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JPanel;


class PolygonPanel extends JPanel implements MouseListener{
    Polygon p;
    public PolygonPanel(){
        p = new Polygon();
        p.addPoint(10, 10);
        p.addPoint(100,50);
        p.addPoint(50,100);
        addMouseListener(this);
        addKeyListener(new MKeyListener());
    }

    class MKeyListener extends KeyAdapter{
        public void keyPressed(KeyEvent e){
            int keyCode = e.getKeyCode();
            if(keyCode==e.VK_RIGHT){
                System.out.println("FFFFUUUUU");
            }
        }
    }


    public void paintComponent(Graphics g){
        super.paintComponent(g);
        setBackground(Color.white);
        g.fillPolygon(p);   
    }

    @Override
    public void mouseClicked(MouseEvent arg0) {
        System.out.println("hei");
        for (int i = 0; i < p.npoints; i++) {
            p.xpoints[i] = p.xpoints[i]+10;
            repaint();
        }

    }

    @Override
    public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseReleased(MouseEvent arg0) {
        // TODO Auto-generated method stub

    }
}

class PolygonFrame extends JFrame{
    public PolygonFrame(){
        setTitle("Polygoner");
        setSize(700, 600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container contentPane = getContentPane();
        contentPane.add(new PolygonPanel());
    }
}

public class Polygonfun {
    public static void main(String[] args) {
        JFrame frame = new PolygonFrame();
        frame.setVisible(true);
    }

}

右矢印キーを押しても何も起こりません。また、次のように実装してみました。

class PolygonPanel extends JPanel implements MouseListener,KeyAdapter

そして、実装されていないメソッドを追加しましたが、それもうまくいきませんでした。おそらく何かを見落としていることはわかっていますが、それを理解できないようです。何かアドバイス?

ありがとう

4

1 に答える 1

1

this.setFocusable(true);パネルに設定します。

次のようにする必要があります。

public PolygonPanel(){
    p = new Polygon();
    p.addPoint(10, 10);
    p.addPoint(100,50);
    p.addPoint(50,100);
    addMouseListener(this);
    this.setFocusable(true);
    this.addKeyListener(new MKeyListener());
}
于 2013-09-25T13:06:18.407 に答える