マウス クリックを使用して単純な円を描く必要があります。最初のクリックが中心になります。2 番目のクリックが半径になり、円は 2 で描画されます。
前もって感謝します
良い質問!以下のコードは自己完結型の例です (半径を定義するためにドラッグを使用しています)。
public static void main(String[] args) throws IOException {
JFrame frame = new JFrame("Test");
frame.add(new JComponent() {
Point p; int r;
{
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
p = e.getPoint(); r = 0; repaint();
}
public void mouseReleased(MouseEvent e) {
r = (int) Math.round(e.getPoint().distance(p));
repaint();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
r = (int) Math.round(e.getPoint().distance(p));
repaint();
}
});
setPreferredSize(new Dimension(400, 300));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(p != null) g.drawOval(p.x - r, p.y - r, 2 * r, 2 * r);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) throws IOException {
JFrame frame = new JFrame("Test");
frame.add(new JComponent() {
Point p1, p2;
{
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (p1 == null || p2 != null) {
p1 = e.getPoint();
p2 = null;
} else {
p2 = e.getPoint();
}
repaint();
}
});
setPreferredSize(new Dimension(400, 300));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(p1 != null && p2 != null) {
int r = (int) Math.round(p1.distance(p2));
g.drawOval(p1.x - r, p1.y - r, 2 * r, 2 * r);
}
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}