zoukankan      html  css  js  c++  java
  • 16.23

     1 import javax.swing.*;
     2 import java.awt.*;
     3 import java.awt.event.*;
     4 import java.util.ArrayList;
     5 
     6 public class Test_16_23 extends JFrame{
     7     private ArrayList xArray = new ArrayList();
     8     private ArrayList yArray = new ArrayList();
     9     
    10     private  int  xPoint,yPoint;
    11     private int radius = 5;
    12     private boolean draw = false;
    13     
    14     public Test_16_23(){
    15         add(new JP());
    16     }
    17     
    18     public static void main(String[] args) {
    19         JFrame frame = new Test_16_23();
    20         frame.setTitle("Test_16_23");
    21         frame.setSize(300, 300);
    22         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    23         frame.setLocationRelativeTo(null);
    24         frame.setVisible(true);
    25       }
    26     
    27     class JP extends JPanel{
    28         private int x1,y1,x2,y2;
    29         
    30         public JP(){
    31             addMouseListener(new MouseAdapter(){
    32                 public void mouseClicked(MouseEvent e){
    33                     xPoint = e.getX();
    34                     yPoint = e.getY();
    35                     draw = true;
    36                     xArray.add(xPoint);
    37                     yArray.add(yPoint);
    38                     
    39                     repaint();
    40                 }
    41             });
    42         }
    43         
    44         protected void paintComponent(Graphics g){
    45             super.paintComponent(g);
    46             
    47             for(int i = 0; i < xArray.size(); i++){                
    48             if(draw)
    49             //画空心圈
    50             g.drawOval((Integer.parseInt(xArray.get(i).toString()))-radius,(Integer.parseInt(yArray.get(i).toString()))-radius, 2*radius, 2*radius);
    51             }
    52             //如果点超过2个,再填充            
    53             if(xArray.size() > 1)
    54                 {                       
    55                     findTheNearest();
    56                     g.fillOval((Integer.parseInt(xArray.get(x1).toString()))-radius,(Integer.parseInt(yArray.get(y1).toString()))-radius, 2*radius, 2*radius);
    57                     g.fillOval((Integer.parseInt(xArray.get(x2).toString()))-radius,(Integer.parseInt(yArray.get(y2).toString()))-radius, 2*radius, 2*radius);
    58                 }
    59             
    60         }
    61         
    62         public void findTheNearest(){
    63             //第一对点赋值           
    64             x1 = y1 = 0;
    65             x2 = y2 = 1;
    66             double Value = 0;
    67             double minValue = theDistance(Integer.parseInt(xArray.get(0).toString()),Integer.parseInt(yArray.get(0).toString()),
    68                     Integer.parseInt(xArray.get(1).toString()),Integer.parseInt(yArray.get(1).toString()));
    69             //利用两层循环达到遍历所有点间距的目的
    70             for(int i = 0; i < xArray.size(); i++){
    71                 for(int j = i + 1; j < xArray.size(); j++){
    72                 Value = theDistance(Integer.parseInt(xArray.get(i).toString()),Integer.parseInt(yArray.get(i).toString()),Integer.parseInt(xArray.get(j).toString()),
    73                         Integer.parseInt(yArray.get(j).toString()));
    74                     if(Value < minValue)
    75                     {                        
    76                         minValue = Value;
    77                         x1 = y1 = i;
    78                         x2 = y2 = j;
    79                     }    
    80                 }           
    81             }
    82         }
    83         
    84         public double theDistance(int x1, int y1, int x2, int y2){
    85             return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    86         }
    87     }    
    88 }
    Test_16_23.java

    效果图:

  • 相关阅读:
    Centos 7 LVM xfs文件系统修复
    Feign报错'xx.FeignClientSpecification', defined in null, could not be registered.
    IDEA提示不区分大小写设置
    基于SpringBoot的多模块项目引入其他模块时@Autowired无法注入其他模块stereotype注解类对象的问题解决
    docker安装mysql
    [转]【收藏】用消息队列和消息应用状态表来消除分布式事务
    临时修改当前crontab编辑器
    golang处理 json中非法字符
    nsq里面WaitGroups两种实用的用法
    golang zlib 压缩,解压缩
  • 原文地址:https://www.cnblogs.com/wanjiang/p/5682156.html
Copyright © 2011-2022 走看看