gpt4 book ai didi

java - 将绘制的圆圈对象添加到 Arraylist

转载 作者:行者123 更新时间:2023-12-01 12:30:57 24 4
gpt4 key购买 nike

我创建了一个对象(圆圈)的数组列表。我添加了一个鼠标单击事件,因此一旦我在面板中单击,一个圆圈就会被淹没并存储在数组列表中。我被困住了,想不出解决我的代码的方法...我希望得到一些可以帮助我解决问题的提示。

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;


public class Circle extends JFrame
{

private JPanel panel;
private ArrayList <Circle> circle;

public static void main(String[]args)

{

setTitle("Drawing Circles");
// Set the size of the window.
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// set the Frame's layout
setLayout(new BorderLayout());
// Add the panels to the frame's content pane.
add(panel, BorderLayout.CENTER);
// Display the window.
setVisible(true);

circle = new ArrayList<Circle>();
}

public Circle()
{
panel.addMouseListener(new ClickingLitener());
}




private class ClickingLitener implements MouseListener
{

public void mouseClicked(MouseEvent e)
{
circle.add(new Circle());

// somehow I need to call panel.paintComponent ... right ?
}
}

}

最佳答案

您的Circle类扩展了JFrame。您无法在 JPanel 上添加或绘制 JFrame,因此您的基本方法是有缺陷的。

如果您想要进行自定义绘制以在面板上绘制Circle,那么您需要存储有关您想要绘制的Circle 的信息。然后在面板的 PaintComponent() 方法中迭代 ArrayList 并绘制所有圆圈。当您向 ArrayList 添加新的 Circle 时,您只需在面板上调用 repaint() 即可。

查看Custom Painting Approaches有关此方法的工作示例。该代码将“矩形”添加到面板,但您应该能够轻松地更改代码以添加圆形。

关于java - 将绘制的圆圈对象添加到 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com