1

マウスカーソルの近くに楕円を描画する簡単なコードは次のとおりです.フレームをクリックするたびに再描画され、一度に描画できる楕円は1つだけです.クリックで描画された各楕円をフレームにとどめる方法を知りたいです.ありがとうそれぞれの提案。

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Buffer extends JPanel implements MouseListener{
public static JFrame frame;
public static boolean check;

public void paintComponent(Graphics g){
    super.paintComponent(g);
    if(check==true){
        g.drawOval((int)MouseInfo.getPointerInfo().getLocation().getX(), (int)MouseInfo.getPointerInfo().getLocation().getY(), 10, 10);
    }
}

public static void main(String args[]){
    Buffer x=new Buffer();
    x.setBackground(Color.cyan);

    frame=new JFrame();
    frame.setSize(500,500);
    frame.addMouseListener(x);
    frame.add(x);
    frame.setVisible(true);
    }

public void mouseClicked(MouseEvent e){
    check=true;
    repaint();
    }

public void mouseEntered(MouseEvent arg0){}
public void mouseExited(MouseEvent arg0){}
public void mousePressed(MouseEvent arg0){}
public void mouseReleased(MouseEvent arg0){}
 }
4

1 に答える 1

5

楕円ArrayListを表すオブジェクトの を作成します。でpaintComponent、リスト内の各楕円を描画します。マウス リスナーで、楕円形をリストに追加します。次に例を示します。

public class Buffer extends JPanel implements MouseListener {
    ...
    private List<Ellipse2D> ovals = new ArrayList<Ellipse2D>();

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        for (Ellipse2D oval : ovals)
            g2d.draw(oval);
    }

    public void mouseClicked(MouseEvent e) {
        ovals.add(new Ellipse2D.Double(e.getX(), e.getY(), 10, 10);
        repaint();
    }
}
于 2013-07-26T09:13:14.167 に答える