图像未在特定点索引处绘制

Image is not getting drawn at the specific point index

我正在尝试制作一个 GUI 程序,其中有一个点数组,应该在特定点重新绘制图像,或者 index.The 代码如下:-

import java.awt.*;

public class Trial {

    BufferedImage image = null;
    public JButton button;

    Trial(){        

        Point[] array = new Point[5];
            array[0] = new Point(150,200);

        button = new JButton("Paste");
                button.setBounds(875, 525, 125, 50);

        try{
            image = ImageIO.read(new File("C:\GUI Program\src\com\company\Square.PNG"));
        } catch (IOException e) {
                e.printStackTrace();
                }

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                        java.awt.Graphics g = getGraphics();
                        g.drawImage(image, array[0].x, array[0].y, null);
                    }); 
        }

    public static void main (String args[]){
        Trial trialObject = new Trial();
    }
}

图像未在此处绘制。请帮我在具体索引处画图

我还是一个初学程序员。所以任何答案都会对我有很大帮助。

提前致谢。

我认为你应该创建一个 JFrame 和 JPanel 并在其中绘制图像

JFrame f = new JFrame();
JPanel p = new JPanel()
{
    @Override
    public void paint(Graphics g) 
    {
        g.drawImage(image, array[0].x, array[0].y, null);
    }
};
f.add(p);
f.setVisible(true);

您应该为自定义绘画创建自定义 JPanel,然后覆盖 paintComponent() 方法来进行绘画。阅读有关 Custom Painting 的 Swing 教程部分,了解一些基础知识。

there is an array of points and an image should be repainted at the specific point

您应该创建一个包含绘画所需的所有信息的自定义对象。所以在你的情况下你需要两个属性:

  1. 图像

您将此自定义对象存储在 ArrayList 中。所以你的 class 需要一个 addCustomObject(...) 方法来将每个对象添加到 ArrayList。

然后在 paintComponent() 方法中迭代 ArrayList 并使用对象的属性绘制每个对象。

查看 Custom Painting Approaches 中的 Draw On Component 示例,了解此方法的工作示例。