作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一个缺乏经验的程序员(除非你算上 70 年代初的 PDP-8)程序员,正在努力解决封闭类中的重绘方法。
该类旨在显示本地的航空 map ,然后在 map 上绘制小圆圈以绘制飞机的航线。随着时间的推移, map 将显示飞机在本地机场降落时最常用的路径。
问题是,经过一天的努力,我仍然无法使重绘工作。
与图形相关的类是:
package com.slatter.radarboxconnect;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
/**
* A RADAR Plotting Frame
*/
public class DrawPanel extends JPanel {
public static BufferedImage img = null; // Create a BufferedImage object
public int cx = 700,cy = 500,cdia = 70; // Aircraft Echo parameters
public DrawPanel() {
// Create Graphic of map
try {
img = ImageIO.read(new File("full.jpeg")); //Get the map
} catch (IOException e){
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
//Draw the Map and a sample red dot
g.drawImage(img, 0, 0, 1400, 1000, 0, 0, 1400, 1000, null);
g.setColor(Color.red);
g.drawOval(cx,cy, cdia, cdia);
g.fillOval(cx,cy, cdia, cdia);
}
public void DpPlotEcho(int x, int y, int pdia) {
cx=x;
cy=y;
cdia=pdia;
repaint(cx,cy,cdia,cdia);
}
}
我在单独的框架中创建此面板,并从应用程序的主体中调用 DpPlotEcho() 方法。
map 和屏幕中央的小红点显示正确,但尝试通过 DpPlotEcho() 方法重新绘制时不会发生更新。
有两个问题:
最佳答案
How do I persuade the repaint to work (The main issue)
每次更改要为组件绘制的数据时,只需在组件上调用 repaint() 即可。然后paintComponent()方法将重新绘制整个组件。
How do I make sure that all the dots stay on the screen.
每次调用paintComponent()方法时,您都需要重新绘制所有圆圈。
这通常由以下人员完成:
参见Custom Painting Approaches了解每种方法的示例。
关于java - JPanel 中的重绘查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619796/
我是一名优秀的程序员,十分优秀!