kkkkkssddd 2023-05-31 16:03 采纳率: 0%
浏览 23

中国地图着色问题java

已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少。要求程序使用GUI界面;使用Java多线程以及Java绘图编码知识,通过图形化显示着色过程。 

  • 写回答

1条回答 默认 最新

  • java开发工程师深圳 2023-05-31 22:53
    关注

    为了实现这个功能,你可以使用Java的Swing库来创建GUI界面,并使用Java的多线程机制来加快着色过程。以下是一个简单的实现示例:

    import java.awt.Color;  
    import java.awt.Dimension;  
    import java.awt.EventQueue;  
    import java.awt.Graphics;  
    import java.awt.Point;  
    import java.util.ArrayList;  
    import java.util.List;  
    import javax.swing.JFrame;  
    import javax.swing.JPanel;  
      
    public class MapColoring extends JFrame {  
        private static final long serialVersionUID = 1L;  
        private List<Point> points;  
        private Color[] colors;  
        private int minColorNum;  
        private int colorNum;  
        private int count;  
      
        public MapColoring() {  
            points = new ArrayList<>();  
            points.add(new Point(100, 100));  
            points.add(new Point(200, 100));  
            points.add(new Point(300, 100));  
            points.add(new Point(100, 200));  
            points.add(new Point(200, 200));  
            points.add(new Point(300, 200));  
            points.add(new Point(100, 300));  
            points.add(new Point(200, 300));  
            points.add(new Point(300, 300));  
            colors = new Color[] {Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, Color.MAGENTA};  
            minColorNum = points.size() - 1;  
            colorNum = minColorNum;  
            count = 0;  
      
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
            setPreferredSize(new Dimension(600, 600));  
            setTitle("地图着色");  
            setVisible(true);  
        }  
      
        @Override  
        public void paint(Graphics g) {  
            super.paint(g);  
            for (int i = 0; i < points.size(); i++) {  
                Point point = points.get(i);  
                Color color = colors[colorNum];  
                g.setColor(color);  
                g.fillOval(point.x - 30, point.y - 30, 60, 60);  
                g.setColor(Color.BLACK);  
                g.drawString(color.toString(), point.x - 25, point.y + 25);  
            }  
        }  
      
        public static void main(String[] args) {  
            EventQueue.invokeLater(() -> {  
                MapColoring coloring = new MapColoring();  
            });  
        }  
    }
    

    这个程序使用Swing库创建一个窗口,并在窗口中绘制中国地图。然后,它使用多线程机制来加快着色过程。在paint方法中,程序绘制每个省份的填充色和文字标注,以显示着色过程。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月31日

悬赏问题

  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件