微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决图像未在指定点索引处绘制

我正在尝试制作一个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();
    }
}

此时未绘制图像。请帮助我在特定的位置绘制图像。

我仍然是初学者。因此,任何答案都将对我有很大帮助。

谢谢。

解决方法

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

存在点阵列,应在特定点重新绘制图像

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

  1. 重点
  2. 图片

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

然后在paintComponent()方法中循环访问ArrayList并使用对象的属性绘制每个对象。

请查看Custom Painting Approaches中的Draw On Component示例,以获取此方法的有效示例。

,

我认为您应该创建一个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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。