java實現幾何圖形計算(Java實現規則幾何圖形問題求解)
2023-05-28 14:15:20
來學習Java基礎練習小項目啦!
隨著計算機的發展,人們對圖形的計算要求會越來越高。在各行各業中的計算人員會對圖形的計算有便利的要求,規則幾何圖形問題求解程序應運而生!
本程序開發使用的IDE是idea!
1.程序採用文件流操作將數據存儲到.txt文件中,文件的路徑是 d:\\xxx.txt 。
2.文件中存儲了基本的數據,包括輸入的規則幾何圖形的長寬高等數據,還包括計算得到的面積周長等數據!例如:
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 comboBox1 = new JComboBox(s1); pNorth1.add(comboBox1); pNorth1.add(new JLabel("圖形線條顏色")); String[] s2 = new String[]{ "黑色","紅色","灰色","藍色","黃色","綠色","紫色"}; final JComboBox comboBox2 = new JComboBox(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(" \r\n"); }catch(IOException a){ } } if(line == 2){ try{ dout.write("圓形線條粗細為"); dout.write(String.valueOf(line)); dout.write(" \r\n"); }catch(IOException a){ } } if(line == 3){ try{ dout.write("圓形線條粗細為"); dout.write(String.valueOf(line)); dout.write(" \r\n"); }catch(IOException a){ } } if(line == 4){ try{ dout.write("圓形線條粗細為"); dout.write(String.valueOf(line)); dout.write(" \r\n"); }catch(IOException a){ } } if(line == 5){ try{ dout.write("長方形線條粗細為"); dout.write(String.valueOf(line)); dout.write(" \r\n"); }catch(IOException a){ } } if(line == 6){ try{ dout.write("圓形線條粗細為"); dout.write(String.valueOf(line)); dout.write(" \r\n"); }catch(IOException a){ } } if(line == 7){ try{ dout.write("圓形線條粗細為"); dout.write(String.valueOf(line)); dout.write(" \r\n"); }catch(IOException a){ } } if(line == 8){ try{ dout.write("圓形線條粗細為"); dout.write(String.valueOf(line)); dout.write(" \r\n"); }catch(IOException a){ } } if(line == 9){ try{ dout.write("圓形線條粗細為"); dout.write(String.valueOf(line)); dout.write(" \r\n"); }catch(IOException a){ } } if(colournumber == 1) { g.setColor(Color.BLACK); try{ dout.write("圓形顏色為"); dout.write("黑色"); dout.write(" \r\n"); }catch(IOException e){ } } else if(colournumber == 2) { g.setColor(Color.RED); try{ dout.write("圓形顏色為"); dout.write("紅色"); dout.write(" \r\n"); }catch(IOException e){ } } else if(colournumber == 3) { g.setColor(Color.GRAY); try{ dout.write("圓形顏色為"); dout.write("灰色"); dout.write(" \r\n"); }catch(IOException e){ } } else if(colournumber == 4) { g.setColor(Color.BLUE); try{ dout.write("圓形顏色為"); dout.write("藍色"); dout.write(" \r\n"); }catch(IOException e){ } } else if(colournumber == 5) { g.setColor(Color.YELLOW); try{ dout.write("圓形顏色為"); dout.write("黃色"); dout.write(" \r\n"); }catch(IOException e){ } } else if(colournumber == 6) { g.setColor(Color.GREEN); try{ dout.write("圓形顏色為"); dout.write("綠色"); dout.write(" \r\n"); }catch(IOException e){ } } else if(colournumber == 7) { g.setColor(Color.magenta); try{ dout.write("圓形顏色為"); dout.write("紫色"); dout.write(" \r\n"); }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(" \r\n"); dout.write("圓形周長為"); dout.write(String.valueOf(p)); dout.write(" \r\n"); dout.write("圓形面積為"); dout.write(String.valueOf(area)); dout.write(" \r\n"); dout.close; }catch(IOException exa){ } } }; jFrame.add(jpanel); // 設置畫框大小(寬度,高度),默認都為0 jFrame.setSize(300, 300); // 將畫框展示出來。true設置可見,默認為false隱藏 jFrame.setVisible(true); jFrame.setLocation(1000,250); }}
6.項目結構以下是項目結構的展示:
規則幾何圖形求解根據圖形的某些特徵設置輸入參數,根據這些參數來計算相應圖形的面積和周長。在繪製圖形方面,是根據所輸入的參數來確定坐標,再連接坐標形成的圖形。在改變圖形方面,用繪圖的類型去改變圖形。
這個程序適合在新手學習完Java基礎知識以後練習,可以加深對Java編程的理解,同時對Java流的操作這一個抽象的概念有了更加深入的理解,學習完GUI技術不僅提升了編程興趣,同時為Java下一階段的學習奠定了基礎。
追風趕月莫停留,平蕪盡處是春山
,