Java 未在特定点索引处绘制图像
我正在尝试制作一个GUI程序,其中有一个点数组,图像应在特定点或索引处重新绘制。代码如下:-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)
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教程的部分,了解一些基本知识
存在一个点数组,应在特定点重新绘制图像
您应该创建一个自定义对象,其中包含绘制所需的所有信息。因此,在您的情况下,您需要两个属性:
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没有太多经验,我发现很难做到你所说的。所以,你可以在你的回答中加入一个试用代码,告诉我需要做的一切。你也可以加入一个试用代码吗?我确实加入了试用代码。该链接提供了一个工作示例,该示例使用带有颜色和矩形的自定义类,而不是点和图像。只有你知道你的确切要求。因此,下载代码并使用它,然后根据您的具体需求进行定制。如果您有关于该代码的具体问题,那么我可以提供帮助。我们不是来为您编写代码的。