一共有两个代码问题
1.使用 Graphics 绘制雷达面板,有同心圆组成,但使用的 drawArc函数 使用的一个圆心 但是显示的并不是同心圆
2.用程序出现了两个窗口,一个静止一个运动的
感谢
package Radar.demo;
import javax.swing.*;
import java.awt.*;
public class Interfaced {
JFrame jf = new panel();
int time = 1000;
class panel extends JFrame{
//JFrame 界面
public panel(){
super("Radar");
setSize(800,500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//Graphics 画笔
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.BLACK);
g.fillRect(0,0,getWidth(),getHeight());
Point center = new Point(getWidth()/2,getHeight()/2);
//画雷达面板 6圈
g.setColor(Color.GREEN);
g.drawArc(center.x-200,center.y-200,300,300,0,360);
g.drawArc(center.x-200,center.y-200,250,250,0,360);
g.drawArc(center.x-200,center.y-200,200,200,0,360);
g.drawArc(center.x-200,center.y-200,150,150,0,360);
g.drawArc(center.x-200,center.y-200,100,100,0,360);
g.drawArc(center.x-200,center.y-200,50,50,0,360);
//面板的线
g.drawLine(center.x-50,center.y-50,center.x-350,center.y-350);
//画飞机位置
for (int i = 0 ;i < Danger.get_num() ;i++){
int x = (int)Danger.get_plane(i).get_X();
int y = (int)Danger.get_plane(i).get_Y();
g.fillArc(x+(center.x-100),y+(center.y-100),6,6,0,360);
}
//画追踪的飞机
g.setColor(Color.RED);
for (int i = 0 ;i < 4 ;i++ ){
int x = (int)Danger.get_plane(i).get_X();
int y = (int)Danger.get_plane(i).get_Y();
g.fillArc(x+(center.x-100),y+(center.y-100),6,6,0,360);
}
}
}
//每秒运行
class thread extends Thread {
public void run(){
while (true){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
jf.repaint();
Danger.Moving();
Danger.Sort();
}
}
}
//运行用户界面
public void Run(){
new Interfaced();
Thread a =new thread();
a.start();
}
}