java - 图像未在特定点索引处绘制
问题描述
我正在尝试制作一个 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()
绘画的方法。阅读 Swing 教程中关于自定义绘画的部分,了解一些基础知识。
有一个点数组,应该在特定点重新绘制图像
您应该创建一个自定义对象,其中包含绘画所需的所有信息。因此,在您的情况下,您需要两个属性:
- 点
- 图片
您将此自定义对象存储在 ArrayList 中。因此,您的类将需要一个addCustomObject(...)
方法来将每个对象添加到 ArrayList。
然后在paintComponent()
方法中迭代ArrayList
并使用对象的属性绘制每个对象。
查看自定义绘画方法Draw On Component
中的示例,了解此方法的工作示例。
推荐阅读
- pandas - 如何对索引包含重复值的 2 列表进行透视
- amazon-web-services - 通过 .Net Core Serverless Lambda API 读取 SQS 消息
- javascript - 通过 Puppeteer 抓取网站返回 undefined
- kubernetes - 在 Kubernetes nginx 入口后面的 GRPC 服务中获取客户端 IP 地址
- encoding - 什么时候固定长度编码比霍夫曼更好?
- r - 查找数据的平均值时引用一个 for 循环值
- angular - 使用参数访问预定义的孩子
- angular - Angular SlickGrid 日期范围过滤器不起作用
- reactjs - 从 React 导入命名导出不适用于 Flow 类型
- anylogic - 连接来自不同进程的 2 个源