首頁 > 軟體

Java實現規則幾何圖形的繪製與周長面積計算詳解

2022-07-11 18:03:02

1.背景

規則幾何圖形問題求解的程式是對根據輸入規則幾何圖形的一些特定的引數來實現對規則幾何圖形的面積和周長求解,以及根據輸入的引數對對他們進行繪製相應的圖形。

在程式中通過規則幾何的型別來輸入相應的引數有程式得到相應的解和圖形。這從而達到了對圖形的計算便利計算和直觀的求出圖形,從而幫助計算人員擁有更高的計算效率。

關鍵字:Java,swing,規則幾何圖形,檔案操作

2.開發工具

本程式開發使用的IDE是idea!

3.資料儲存設計

1.程式採用檔案流操作將資料儲存到.txt檔案中,檔案的路徑是d:\xxx.txt。

2.檔案中儲存了基本的資料,包括輸入的規則幾何圖形的長寬高等資料,還包括計算得到的面積周長等資料!例如:

4.專案功能設計

在程式中,可以實現已經新增的幾何圖形的面積和周長的求解,繪製它們相應的圖形和改變其形狀,線條的粗細和顏色。根據提示,我們可以輸入相關特徵的引數去求解除它們的面積、周長以及改變它們的引數,也可以根據提示去改變各邊的線條的粗細和顏色。

在規則幾何問題求解中系統主要有Main程式、Triangleplay程式、 Rectangleplay程式、Squareplay程式、Circleplay程式、Rhombusplay程式、Trapezoidplay程式、Trapezoidequilateral程式和Trapezoidright程式。

5.部分程式碼展示

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;


public class Circleplay {
    public static void main(String args[]){
        WindowCircle circleplay = new WindowCircle();
        circleplay.setTitle("幾何圖形計算");
        circleplay.setSize(500,300);
        circleplay.setLocation(500,250);
    }
}

class WindowCircle extends JFrame {
    Circle circle; // 資料物件
    JTextField textA, textB, textC; // 資料物件的檢視
    JTextArea showArea; // 資料物件的檢視
    JButton controlButton1; // 控制器物件
    JButton controlButton2;


    WindowCircle() {
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    }

    void init() {
        circle = new Circle();
        textA = new JTextField(5);
        textB = new JTextField(5);
        showArea = new JTextArea();
        controlButton1 = new JButton("計算");
        controlButton2 = new JButton("退出");
        JPanel pNorth = new JPanel();
        JPanel pNorth1 = new JPanel();

        pNorth.add(new JLabel("半徑"));
        pNorth.add(textA);
        pNorth.add(controlButton1);
        pNorth.add(controlButton2);
        pNorth.setLocation(250,250);

        pNorth1.add(new JLabel("圖形線條粗細"));
        String[] s1 = new String[]{"1","2","3","4","5","6","7","8","9"};
        final JComboBox<String> comboBox1 = new JComboBox<String>(s1);
        pNorth1.add(comboBox1);


        pNorth1.add(new JLabel("圖形線條顏色"));
        String[] s2 = new String[]{"黑色","紅色","灰色","藍色","黃色","綠色","紫色"};
        final JComboBox<String> comboBox2 = new JComboBox<String>(s2);
        pNorth1.add(comboBox2);

        add(pNorth, BorderLayout.NORTH);
        pNorth1.setPreferredSize(new Dimension(90,150));
        add(pNorth1, BorderLayout.WEST);
        add(new JScrollPane(showArea), BorderLayout.CENTER);

        controlButton1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                try {
                    double a = Double.parseDouble(textA.getText().trim()); //
                    circle.setA(a); // 更新資料
                    circle.paint();
                    String area1 = circle.getlength();
                    String area2 = circle.getArea();
                    showArea.append("半徑為"+a+"的圓"+"	 "+"周長為:" +area1+"	"+"面積為:"+area2+"n");
                } catch (Exception ex) {
                    showArea.append("n" + ex + "n");
                }
            }});

        controlButton2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                dispose();
            }});

        comboBox1.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    circle.Line(comboBox1.getSelectedIndex()+1);
                    circle.paint();
                }
            }});


        comboBox2.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    circle.Colour(comboBox2.getSelectedIndex()+1);
                    circle.paint();
                }
            }});

    }}

class Circle {

    FileWriter dout;
    double sideA, sideB, area,p;
    int line = 1,colournumber = 1;

    public void setA(double a) {
        sideA = a;

    }



    public String getArea() {

        area = 3.14*sideA*sideA;
        return String.valueOf(area); // Double.toString(area)

    }
    public String getlength() {

        p = 3.14 * sideA;
        return String.valueOf(p);

    }


    public void Line(int line)
    {
        this.line = line;

    }


    public void Colour(int colournumber)
    {
        this.colournumber = colournumber;

    }


    public void paint(){

        try{
            dout = new FileWriter("d:\Circle.txt");

        }catch(IOException e){}

        JFrame jFrame = new JFrame("圓的圖形");
        // 建立畫板
        JPanel jpanel = new JPanel() {

            public void paint(Graphics graphics) {
                // 必須先呼叫父類別的paint方法
                super.paint(graphics);

                Graphics2D g=(Graphics2D)  graphics.create();
                g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                if(colournumber == 1)
                    g.setColor(Color.BLACK);
                else if(colournumber == 2)
                    g.setColor(Color.RED);
                else if(colournumber == 3)
                    g.setColor(Color.GRAY);
                else if(colournumber == 4)
                    g.setColor(Color.BLUE);
                else if(colournumber == 5)
                    g.setColor(Color.YELLOW);
                else if(colournumber == 6)
                    g.setColor(Color.GREEN);
                else if(colournumber == 7)
                    g.setColor(Color.magenta);


                if(line == 1){
                    try{
                        dout.write("圓形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }


                if(line == 2){
                    try{

                        dout.write("圓形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }


                if(line == 3){
                    try{

                        dout.write("圓形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }


                if(line == 4){
                    try{

                        dout.write("圓形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }

                if(line == 5){
                    try{

                        dout.write("長方形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }


                if(line == 6){
                    try{

                        dout.write("圓形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }

                if(line == 7){
                    try{

                        dout.write("圓形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }


                if(line == 8){
                    try{

                        dout.write("圓形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }

                if(line == 9){
                    try{

                        dout.write("圓形線條粗細為");
                        dout.write(String.valueOf(line));
                        dout.write(" rn");
                    }catch(IOException a){}

                }


                if(colournumber == 1)
                {
                    g.setColor(Color.BLACK);

                    try{

                        dout.write("圓形顏色為");
                        dout.write("黑色");
                        dout.write(" rn");
                    }catch(IOException e){}

                }


                else if(colournumber == 2)
                {
                    g.setColor(Color.RED);

                    try{

                        dout.write("圓形顏色為");
                        dout.write("紅色");
                        dout.write(" rn");
                    }catch(IOException e){}

                }

                else if(colournumber == 3)
                {

                    g.setColor(Color.GRAY);

                    try{

                        dout.write("圓形顏色為");
                        dout.write("灰色");
                        dout.write(" rn");
                    }catch(IOException e){}

                }

                else if(colournumber == 4)

                {
                    g.setColor(Color.BLUE);

                    try{

                        dout.write("圓形顏色為");
                        dout.write("藍色");
                        dout.write(" rn");
                    }catch(IOException e){}

                }

                else if(colournumber == 5)
                {
                    g.setColor(Color.YELLOW);

                    try{

                        dout.write("圓形顏色為");
                        dout.write("黃色");
                        dout.write(" rn");
                    }catch(IOException e){}

                }

                else if(colournumber == 6)
                {
                    g.setColor(Color.GREEN);
                    try{

                        dout.write("圓形顏色為");
                        dout.write("綠色");
                        dout.write(" rn");
                    }catch(IOException e){}

                }

                else if(colournumber == 7)
                {
                    g.setColor(Color.magenta);

                    try{

                        dout.write("圓形顏色為");
                        dout.write("紫色");
                        dout.write(" rn");
                    }catch(IOException e){}

                }




                Stroke stroke=new BasicStroke(line);
                g.setStroke(stroke);


                DecimalFormat df = new DecimalFormat("######0");
                String str1 = df.format(sideA);
                int a = Integer.parseInt(str1);

                g.drawOval(100, 50, a*10,a*10);


                try{
                    dout.write("圓形半徑為");
                    dout.write(String.valueOf(a));
                    dout.write(" rn");
                    dout.write("圓形周長為");
                    dout.write(String.valueOf(p));
                    dout.write(" rn");
                    dout.write("圓形面積為");
                    dout.write(String.valueOf(area));
                    dout.write(" rn");
                    dout.close();
                }catch(IOException exa){}


            }

        };

        jFrame.add(jpanel);
        // 設定畫框大小(寬度,高度),預設都為0
        jFrame.setSize(300, 300);
        // 將畫框展示出來。true設定可見,預設為false隱藏
        jFrame.setVisible(true);
        jFrame.setLocation(1000,250);
    }
}

6.專案結構

以下是專案結構的展示:

7.總結

規則幾何圖形求解根據圖形的某些特徵設定輸入引數,根據這些引數來計算相應圖形的面積和周長。在繪製圖形方面,是根據所輸入的引數來確定座標,再連線座標形成的圖形。在改變圖形方面,用繪圖的類去改變圖形。

這個程式適合在新手學習完Java基礎知識以後練習,可以加深對Java程式設計的理解,同時對Java流的操作這一個抽象的概念有了更加深入的理解,學習完GUI技術不僅提升了程式設計興趣,同時為Java下一階段的學習奠定了基礎。

以上就是Java實現規則幾何圖形的繪製與周長面積計算詳解的詳細內容,更多關於Java幾何圖形繪製 計算的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com