import javax.swing.*;
import java.awt.event.*;
import java.awt.Container;
import java.awt.GridLayout;
import java.text.DecimalFormat;
public class Yuan extends JFrame {
   private JLabel zuobiaoL1,zuobiaoL2,distanceL;
   private JLabel radiusL,circumferenceL,areaL;
   
   private JTextField zuobiaoTF1,zuobiaoTF2;
   private JTextField distanceTF,radiusTF,circumferenceTF,areaTF;
   private JButton distanceB,radiusB,circumferenceB,areaB,calculateB,exitB;
  
   /* private DistanceButtonHandler disHandler;
   private RadiusButtonHandler radHandler;
   private CircumferenceButtonHandler cirHandler;
   private AreaButtonHandler areHandler;
   */private CalculateButtonHandler calHandler;
   private ExitButtonHandler exiHandler;
   
   public static final double PAI=3.1416;
   private static final int WIDTH=400;
   private static final int HIGHT=1200;
   
   public Yuan(){
   zuobiaoL1=new JLabel("坐标1",SwingConstants.RIGHT);
   zuobiaoL2=new JLabel("做标2",SwingConstants.RIGHT);
   distanceL=new JLabel("distance",SwingConstants.RIGHT);
   radiusL=new JLabel("radius",SwingConstants.RIGHT);
   circumferenceL=new JLabel("circumference",SwingConstants.RIGHT);
   areaL=new JLabel("area",SwingConstants.RIGHT);
   
   zuobiaoTF1=new JTextField(10);
   zuobiaoTF2=new JTextField(10);
   distanceTF=new JTextField(10);
   radiusTF=new JTextField(10);
   circumferenceTF=new JTextField(10);
   areaTF=new JTextField(10);
  /* distance=new JButton("distance");
   disHandler=new DistanceButtonHandler();
   distance.addActionListener(disHandler);
   
   radius=new JButton("radius");
   radHandler=new RadiusButtonHandler();
   radius.addActionListener(radHandler);
   
   circumference=new JButton("circumference");
   cirHandler=new CircumferenceButtonHandler();
   circumference.addActionListener(cirHandler);
   
   area=new JButton("area");
   areHandler=new AreButtonHandler();
   area.addActionListener(areHandler);
   */
   calculateB=new JButton("calculate");
   calHandler=new CalculateButtonHandler();
   calculateB.addActionListener(calHandler);
   
   exitB=new JButton("exit");
   exiHandler=new ExitButtonHandler();
   exitB.addActionListener(exiHandler);
   
   setTitle("Yuan");
   Container pane=getContentPane();
   pane.setLayout(new GridLayout(7,2));
 
   pane.add(zuobiaoL1);
   pane.add(zuobiaoTF1);
   pane.add(zuobiaoL2);
   pane.add(zuobiaoTF2);
   pane.add(distanceL);
   pane.add(distanceTF);
   pane.add(radiusL);
   pane.add(radiusTF);
   pane.add(circumferenceL);
   pane.add(circumferenceTF);
   pane.add(areaL);
   pane.add(areaTF);
   pane.add(calculateB);
   pane.add(exitB);    setSize(WIDTH,HIGHT);
   setVisible(true);
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   
   }
   public class CalculateButtonHandler implements ActionListener{
    public void actionPerformed(ActionEvent e){
   Piont zuobiao1,zuobiao2;
   zuobiao1=new Piont(zuobiaoTF1.getText());
         
   zuobiao2=new Piont(zuobiaoTF2.getText());
   double d=distance(zuobiao1,zuobiao2);
   double r=radius(d);
   distanceTF.setText(valueOf(d));
   radiusTF.setText(valueOf(radius(d)));
   areaTF.setText(""+area(r));
 circumferenceTF.setText(""+circumference(r));
           
    }
   } 
   public class ExitButtonHandler implements ActionListener{
  public void actionPerformed(ActionEvent e){
             System.exit(0);
  }
   }
   public class Piont {
      double x,y;
     Piont(double X  ,  double Y) {
     x = X ;
         y = Y ;
      }
      public static double distance(Piont a ,Piont b)   {
            double x1=a.x;
            double y1=a.y;
            double x2=b.x;
            double y2=b.y;
            double aa=Math.pow(x1-x2,2)+Math.pow(y1-y2,2);
          double d=Math.sqrt(aa);
            return d; 
      }
      public double radius(double d) {
        return (d/2);
        }          
        public double circumference(double r){
        return(2*PAI*r);
        }
        public double area(double r){
        return(PAI*r*r);
        }
        public void main(String[] args){
 
  }
   }
}

解决方案 »

  1.   

    调试时出错,如何改正。还有自己写的Piont类中的方法中不能用static,一用就出错;
      

  2.   

    因为你的point是内部类,内部类是不能有static方法的
    我想问一下,你把这些类都包含在一个类里面,是你源代码就这样 还是你修理过的
      

  3.   

    Piont可以写成static内部类。public static class Piont
    或者直接提取到Test类之外。先自己找一下语法错误再谈调试。
      

  4.   

      我想问一下如何用强制转换把这语句zuobiao1=new Piont(zuobiaoTF1.getText());修正
          还有  zuobiao2=new Piont(zuobiaoTF2.getText());
       double d=distance(zuobiao1,zuobiao2);
       double r=radius(d);
       distanceTF.setText(valueOf(d));
       radiusTF.setText(valueOf(radius(d)));
       areaTF.setText(""+area(r));
     circumferenceTF.setText(""+circumference(r));
           这些方法都出错,如何修正。
       Thanks
      

  5.   

    1.Piont有Piont(String str)这样的构造方法吗?
    2.distance这些方法谁定义的,方法调用语法?
      

  6.   

    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.text.DecimalFormat;public class Test extends JFrame {    private JLabel zuobiaoL1, zuobiaoL2, distanceL;
        private JLabel radiusL, circumferenceL, areaL;
        private JTextField zuobiaoTF1, zuobiaoTF2;
        private JTextField distanceTF, radiusTF, circumferenceTF, areaTF;
        private JButton distanceB, radiusB, circumferenceB, areaB, calculateB, exitB;
        /* private DistanceButtonHandler disHandler;
        private RadiusButtonHandler radHandler;
        private CircumferenceButtonHandler cirHandler;
        private AreaButtonHandler areHandler;
         */
        private CalculateButtonHandler calHandler;
        private ExitButtonHandler exiHandler;
        public static final double PAI = 3.1416;
        private static final int WIDTH = 400;
        private static final int HIGHT = 1200;    public static void main(String[] args) {
            new Test();
        }    public Test() {
            zuobiaoL1 = new JLabel("坐标1", SwingConstants.RIGHT);
            zuobiaoL2 = new JLabel("做标2", SwingConstants.RIGHT);
            distanceL = new JLabel("distance", SwingConstants.RIGHT);
            radiusL = new JLabel("radius", SwingConstants.RIGHT);
            circumferenceL = new JLabel("circumference", SwingConstants.RIGHT);
            areaL = new JLabel("area", SwingConstants.RIGHT);        zuobiaoTF1 = new JTextField(10);
            zuobiaoTF2 = new JTextField(10);
            distanceTF = new JTextField(10);
            radiusTF = new JTextField(10);
            circumferenceTF = new JTextField(10);
            areaTF = new JTextField(10);
            /* distance=new JButton("distance");
            disHandler=new DistanceButtonHandler();
            distance.addActionListener(disHandler);        radius=new JButton("radius");
            radHandler=new RadiusButtonHandler();
            radius.addActionListener(radHandler);        circumference=new JButton("circumference");
            cirHandler=new CircumferenceButtonHandler();
            circumference.addActionListener(cirHandler);        area=new JButton("area");
            areHandler=new AreButtonHandler();
            area.addActionListener(areHandler);
             */
            calculateB = new JButton("calculate");
            calHandler = new CalculateButtonHandler();
            calculateB.addActionListener(calHandler);        exitB = new JButton("exit");
            exiHandler = new ExitButtonHandler();
            exitB.addActionListener(exiHandler);        setTitle("Yuan");
            Container pane = getContentPane();
            pane.setLayout(new GridLayout(7, 2));        pane.add(zuobiaoL1);
            pane.add(zuobiaoTF1);
            pane.add(zuobiaoL2);
            pane.add(zuobiaoTF2);
            pane.add(distanceL);
            pane.add(distanceTF);
            pane.add(radiusL);
            pane.add(radiusTF);
            pane.add(circumferenceL);
            pane.add(circumferenceTF);
            pane.add(areaL);
            pane.add(areaTF);
            pane.add(calculateB);
            pane.add(exitB);        setSize(WIDTH, HIGHT);
            setVisible(true);
            setDefaultCloseOperation(EXIT_ON_CLOSE);    }    public class CalculateButtonHandler implements ActionListener {        public void actionPerformed(ActionEvent e) {
                Piont zuobiao1, zuobiao2;
                zuobiao1 = new Piont(zuobiaoTF1.getText());            zuobiao2 = new Piont(zuobiaoTF2.getText());
                double d = Piont.distance(zuobiao1, zuobiao2);
                double r = Piont.radius(d);
                distanceTF.setText(String.valueOf(d));
                radiusTF.setText(String.valueOf(Piont.radius(d)));
                areaTF.setText("" + Piont.area(r));
                circumferenceTF.setText("" + Piont.circumference(r));        }
        }    public class ExitButtonHandler implements ActionListener {        public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        }    public static class Piont {        double x, y;        Piont(String str) {
               //假设坐标输入格式为:x,y 
                String[] strs = str.split(",");
                if(strs.length == 2){
                    this.x = Double.parseDouble(strs[0]);
                    this.y = Double.parseDouble(strs[1]);
                }
            }        Piont(double X, double Y) {
                x = X;
                y = Y;
            }        public static double distance(Piont a, Piont b) {
                double x1 = a.x;
                double y1 = a.y;
                double x2 = b.x;
                double y2 = b.y;
                double aa = Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2);
                double d = Math.sqrt(aa);
                return d;
            }        public static double radius(double d) {
                return (d / 2);
            }        public static double circumference(double r) {
                return (2 * PAI * r);
            }        public static double area(double r) {
                return (PAI * r * r);
            }
        }
    }