-2

私は YouTube で MouceListeners の使用方法に関するビデオを見てきましたが、ビデオでは機能しましたが、私のコンピューターでは機能しません。これがアプレットのコード パッケージです。

    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;

    public class MouseListenerTut 
    extends Applet
    implements MouseListener{


private Graphics GG = null;


private void Init(){
    this.addMouseListener(this);


}

private int Mx;
private int My;


public void paint(Graphics g){


    GG = g.create();

    this.setSize(new Dimension(800,600));

}


public void DrawDot(int x, int y){

    int r = (int) (Math.random() * 255);
    int g = (int) (Math.random() * 255);
    int b = (int) (Math.random() * 255);

    Color Col = new Color(r,g,b);
    GG.setColor(Col);
    GG.fillOval(x, y, 10, 10);
}


@Override
public void mouseClicked(MouseEvent e) {
     Mx = e.getX();
     My = e.getY();

    DrawDot(Mx,My);
}


@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

}






    }

なぜうまくいかないのか、本当にわかりません。エラーは表示されず、彼にとっては完璧に機能するように縫い付けられていました...

4

2 に答える 2

1

廃止されたグラフィックに描画しています。BufferedImage を使用して、すべての描画を追跡します。

次のペイント方法を使用します。

public void paint(Graphics g)
{
    g.drawImage(buffer, 0, 0, null);
}

この mouseClicked メソッドを使用します。

public void DrawDot(int x, int y)
{
    int r = (int) (Math.random() * 255);
    int g = (int) (Math.random() * 255);
    int b = (int) (Math.random() * 255);

    Graphics g = buffer.createGraphics();
    Color Col = new Color(r,g,b);
    g.setColor(Col);
    g.fillOval(x, y, 10, 10);
    g.dispose();

    repaint(); // make sure you show your edits on screen
}

最後に、bufferオブジェクトがあることを確認します。これをクラスに入れます:

 private BufferedImage buffer = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_RGBA_PRE);
于 2013-08-07T14:51:40.077 に答える