java写一个飞机航线路线图
时间: 2023-12-19 12:03:48 浏览: 35
要实现飞机航线路线图,可以使用 Java Swing 绘制图形界面,用 Graphics2D 绘制航线和标注,下面是一个简单的示例代码:
```java
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.util.ArrayList;
import java.util.List;
public class FlightMap extends JPanel {
private List<FlightRoute> routeList;
public FlightMap(List<FlightRoute> routeList) {
this.routeList = routeList;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 绘制背景
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, getWidth(), getHeight());
// 绘制航线
g2d.setColor(Color.BLUE);
for (FlightRoute route : routeList) {
int startX = route.getStartX();
int startY = route.getStartY();
int endX = route.getEndX();
int endY = route.getEndY();
g2d.drawLine(startX, startY, endX, endY);
}
// 绘制标注
g2d.setColor(Color.BLACK);
for (FlightRoute route : routeList) {
int labelX = (route.getStartX() + route.getEndX()) / 2;
int labelY = (route.getStartY() + route.getEndY()) / 2;
g2d.drawString(route.getRouteName(), labelX, labelY);
}
g2d.dispose();
}
@Override
public Dimension getPreferredSize() {
return new Dimension(800, 600);
}
public static void main(String[] args) {
// 构造航线列表
List<FlightRoute> routeList = new ArrayList<>();
routeList.add(new FlightRoute("Beijing", "Shanghai", 100, 100, 400, 100));
routeList.add(new FlightRoute("Shanghai", "Guangzhou", 400, 100, 700, 300));
routeList.add(new FlightRoute("Guangzhou", "Shenzhen", 700, 300, 500, 500));
routeList.add(new FlightRoute("Shenzhen", "Hong Kong", 500, 500, 300, 400));
// 绘制航线图
FlightMap map = new FlightMap(routeList);
JFrame frame = new JFrame("Flight Map");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(map);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class FlightRoute {
private String startCity;
private String endCity;
private int startX;
private int startY;
private int endX;
private int endY;
public FlightRoute(String startCity, String endCity, int startX, int startY, int endX, int endY) {
this.startCity = startCity;
this.endCity = endCity;
this.startX = startX;
this.startY = startY;
this.endX = endX;
this.endY = endY;
}
public String getRouteName() {
return startCity + " - " + endCity;
}
public int getStartX() {
return startX;
}
public int getStartY() {
return startY;
}
public int getEndX() {
return endX;
}
public int getEndY() {
return endY;
}
}
```
在这个示例中,我们定义了一个 `FlightRoute` 类来表示航线信息,包括起点城市、终点城市和起点、终点坐标。我们还定义了一个 `FlightMap` 类来绘制航线图。在 `paintComponent` 方法中,我们首先绘制背景,然后绘制航线和标注。在 `main` 方法中,我们构造了一个航线列表 `routeList`,然后创建了一个 `FlightMap` 实例并将其添加到 `JFrame` 中,最后显示 `JFrame` 窗口。