Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未在特定点索引处绘制图像_Java_Drawimage - Fatal编程技术网

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

Java 未在特定点索引处绘制图像,java,drawimage,Java,Drawimage,我正在尝试制作一个GUI程序,其中有一个点数组,图像应在特定点或索引处重新绘制。代码如下:- import java.awt.*; public class Trial { BufferedImage image = null; public JButton button; Trial(){ Point[] array = new Point[5]; array[0] = new Point(150,200)

我正在尝试制作一个GUI程序,其中有一个点数组,图像应在特定点或索引处重新绘制。代码如下:-

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()
方法来进行绘制。阅读上Swing教程的部分,了解一些基本知识

存在一个点数组,应在特定点重新绘制图像


您应该创建一个自定义对象,其中包含绘制所需的所有信息。因此,在您的情况下,您需要两个属性:

  • 重点
  • 形象
  • 将此自定义对象存储在ArrayList中。因此,您的类需要一个
    addCustomObject(…)
    方法将每个对象添加到ArrayList中

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


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

    此代码甚至不会编译。你需要一个框架来放置按钮和图像。我建议你为初学者找一本好书或在线教程。此外,AWT已经过时。考虑使用Swing或JavaFX。这里是Oacles教程:实际上这不是我真正的代码,我只是想制作一个最小的可复制示例。在我的真实代码中,我已经完成了与JFrame和所有相关的所有工作。但还是有一样的problem@camickr,你的答案可能会解决这个问题,但另一件事是,我还想删除或删除图像从其先前的位置。你可以认为这是将图像移动到另一个点,而不是移动,只是用一个按钮将其传送到那里click@ShubhamGoel,将自定义对象中的点对象更改为新位置。1)不要覆盖paint()。在Swing中,您重写了
    paintComponent(…)
    2)第一条语句应该是
    super.paintComponent(g)
    ,以确保背景被清除。@camickr谢谢您的评论。您能给我解释一下paint()和paintComponent()之间的区别吗在我的回答中,我提供了一个链接,指向关于
    自定义绘制的Swing教程,该教程详细介绍了Swing中的绘制过程。由于我对java没有太多经验,我发现很难做到你所说的。所以,你可以在你的回答中加入一个试用代码,告诉我需要做的一切。你也可以加入一个试用代码吗?我确实加入了试用代码。该链接提供了一个工作示例,该示例使用带有颜色和矩形的自定义类,而不是点和图像。只有你知道你的确切要求。因此,下载代码并使用它,然后根据您的具体需求进行定制。如果您有关于该代码的具体问题,那么我可以提供帮助。我们不是来为您编写代码的。