เขียนแอปพลิเคชันที่จำลองเครื่องคิดเลข โดยใช้เค้าโครงแผงและตาราง เพิ่มกล่องข้อความ ปุ่มตัวเลข 10 ปุ่ม (0~9) ปุ่มบวก ลบ คูณหาร 4 ปุ่ม ปุ่มเครื่องหมายเท่ากับ ปุ่มล้าง และสี่เหลี่ยมจัตุรัส ปุ่มรูท ปุ่ม Backspace ต้องใช้สูตรการคำนวณและผลลัพธ์เพื่อแสดงในกล่องข้อความและเอฟเฟกต์ดังแสดงในรูปด้านล่าง
รหัสเครื่องคิดเลขอย่างง่าย Java:
import javax.swing.*; import java.swing.JTextField; import java.awt.event.*; นำเข้า java.awt.Color; ActionListener { ส่วนตัว JPanel p1 = ใหม่ JPanel (); // สร้างพาเนลส่วนตัว JPanel p2 = ใหม่ JPanel (); t1; //กล่องข้อความ 1 ใช้เพื่อแสดงข้อมูลอินพุตส่วนตัว JTextField t2; //กล่องข้อความ 2 ใช้เพื่อแสดงข้อมูลฉลาก JLabel ส่วนตัว; //ข้อมูลป้ายกำกับ StringBuffer str; ,y ; //x และ y เป็นตัวถูกดำเนินการทั้งคู่ int z; //Z แสดงถึงตัวดำเนินการที่ถูกคลิก ] = ใหม่ JButton[12]; //สร้างอาร์เรย์ด้วยปุ่มส่วนตัว 12 ปุ่ม JButton b1,b2,b3,b4,b5,b6,b7,b8; // ปุ่มฟังก์ชันเลขคณิตสาธารณะ Ex5_2() { super("Simple Calculator" ); /ชื่อหน้าต่างคอนเทนเนอร์ c = getContentPane(); //สร้างวัตถุแผงเนื้อหา t1 = JTextField ใหม่ (30); t1.setEditable(false); //แสดงได้อย่างเดียว ไม่สามารถแก้ไขได้ t2 = new JLabel("Welcome to เครื่องคิดเลขรุ่น Xiaowu ^_^o~ ทำงานหนัก! "); label.setForeground(Color.blue); //สร้างบัฟเฟอร์สตริงว่าง str=new StringBuffer(); p2.add(label); //เพิ่มป้ายกำกับไปที่พาเนล p2.add(t2); //เพิ่มกล่องข้อความไปที่พาเนล p2.add(t1); //เพิ่มกล่องข้อความไปที่พาเนล p2.setLayout(new GridLayout(4,1 )); // วางเค้าโครงแผงเป็น 4 แถวและ 1 คอลัมน์สำหรับ (int i=0;i<10;i++) //ตั้งค่าป้ายกำกับสำหรับปุ่ม 0~9 ในอาร์เรย์และลงทะเบียนผู้ฟัง { String s=""+ ฉัน; ข [i]= ใหม่ JButton(s); b[i].addActionListener(this); } // สร้างอินสแตนซ์แต่ละปุ่ม b[10]= new JButton("-/+"); b[11]= new JButton("."); = ใหม่ JButton("/"); b2= ใหม่ JButton("ย้อนกลับ"); b3= ใหม่ JButton("*"); b4= ใหม่ JButton("C"); JButton("+"); b6= new JButton("Sqrt"); b7= new JButton("-"); b8= new JButton("="); // ตั้งค่าสีพื้นหน้าของปุ่มสำหรับ (int i=0 ; i<12;i++) { b[i].setForeground(Color.blue); } b1.setForeground(Color.red); b3.setForeground(สี.สีแดง); b5.setForeground(Color.red); b7.setForeground(Color.red); b8.setForeground(Color.blue); .blue); //เพิ่มไปที่แผง p1.add(b[7]); p1.add(b[9]); p1.add(b1); p1.add(b[4]); 6]); p1.add(b3); p1.add(b[3]); p1.add(b5); p1.add(b6); p1.add(b[0]); p1.add(b[10]); p1.add(b7) ;p1.add(b8); p1.setLayout(new GridLayout(4,5,5,5)); //ลงทะเบียนผู้ฟัง b[10].addActionListener(สิ่งนี้); b[11].addActionListener(นี่); b5.addActionListener(นี่); ) ); b7.addActionListener(นี่); b8.addActionListener(นี่); //เพิ่มพาเนลไปยังพาเนลเนื้อหา c.add(p2); c.add(p1); c.setLayout(new FlowLayout()); //ตั้งค่าเป็นโครงร่างต่อเนื่อง setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); หน้าต่างเพื่อปิดการกระทำ setVisible(true); // ตั้งค่าเป็น setResizable (false); // ห้ามปรับขนาดเฟรม setSize (400,300); // ตั้งค่าขนาดหน้าต่าง} //วิธีการหลักใช้การสร้างหน้าต่าง public static void main(String[] args) { Ex5_2 f = new Ex5_2(); } //ปุ่มประมวลผลเหตุการณ์ public void actionPerformed(ActionEvent e) { ลอง { if(e.getSource( )==b4) //เลือก "C" เพื่อล้าง { t1.setText("0"); //ล้างกล่องข้อความ t1.setHorizontalAlignment(JTextField.RIGHT); //จัดข้อความให้ชิดขวา str.setLength(0); //ล้างบัฟเฟอร์สตริงเพื่อเตรียมรับตัวถูกดำเนินการอินพุตใหม่} else if(e.getSource ()==b[10])//คลิก "+/-" เพื่อเลือกว่าตัวถูกดำเนินการอินพุตเป็นตัวเลขบวกหรือลบ{ x=Double.parseDouble(t1.getText().trim());//ฟังก์ชันการตัดแต่งคือการลบช่องว่างในสตริง t1.setText(""+(-x)); t1.setHorizontalAlignment(JTextField.RIGHT) ; } else if (e.getSource()==b5)//คลิกปุ่มบวกเพื่อรับค่า x และ z และล้างค่า y{ x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=0; } อื่น ๆ ถ้า(e.getSource()==b7)//คลิกเพื่อลด Button รับค่าของ x และ z และล้างค่าของ y { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=1; } else if(e.getSource()==b3)//คลิกปุ่มคูณเพื่อรับค่า x และ z และล้างค่า y{ x =Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=2; if(e.getSource()==b1)//คลิกปุ่มหารเพื่อรับค่า x และ z และล้างค่า y{ x=Double.parseDouble(t1.getText().trim()); .setLength(0); y=0d; z=3; } else if(e.getSource()==b8)//คลิกปุ่มเครื่องหมายเท่ากับเพื่อส่งออกผลลัพธ์การคำนวณ { str.setLength(0); สวิตช์(z) { กรณีที่ 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; กรณีที่ 1: t1.setText(""+(xy)); setHorizontalAlignment (JTextField.RIGHT); แบ่งกรณีที่ 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT); กรณีที่ 3: t1.setText(""+(x/y)); ;break; } } อื่น ๆ if(e.getSource()==b[11])//คลิกปุ่ม "." เพื่อป้อนทศนิยม { if(t1.getText().trim().indexOf('.')!=-1) // ตรวจสอบว่าสตริงมีจุดทศนิยมอยู่แล้วหรือไม่ { } else //ถ้าไม่มีจุดทศนิยม { if(t1.getText().trim().equals("0"))//ถ้าแสดงในตอนแรกเป็น 0 { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); } อื่น ๆ ถ้า(t1.getText().trim().equals("")/ /ถ้าเริ่มแรกแสดงเป็นว่างเปล่า ไม่ต้องทำอะไรเลย {} else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=0d; } อื่น ๆ ถ้า (e.getSource()==b6) // ค้นหารากที่สอง { x=Double.parseDouble(t1.getText().trim()); if(x<0) { t1.setText("ข้อยกเว้นรูปแบบตัวเลข"); t1.setHorizontalAlignment(JTextField.RIGHT); } str .setLength(0); y=0d; } อื่น ๆ { if(e.getSource()==b[0])//หากเลือกคีย์ตัวเลข "0" { if(t1.getText().trim().equals("0"))//หากเป็น หากการแสดงผลบนหน้าจอเป็นศูนย์ จะไม่มีการดำเนินการใดๆ {} else t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); y=Double.parseDouble(t1.getText().trim()); } else if (e.getSource()==b2) // เลือกคีย์ย้อนกลับ { if(! t1.getText().trim().equals("0"))//ถ้าหน้าจอไม่เป็นศูนย์{ if(str.length()!=1) { t1.setText(str.delete(str.length()-1,str.length()).toString());//ข้อยกเว้นสตริงที่อยู่นอกขอบเขตอาจถูกโยนทิ้ง t1.setHorizontalAlignment(JTextField.RIGHT) ; } อื่น ๆ { t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=Double.parseDouble(t1.getText().trim()); } อื่น ๆ { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT) ; y=Double.parseDouble(t1.getText().trim()); catch(NumberFormatException e1){ t1.setText("ข้อยกเว้นรูปแบบตัวเลข"); t1.setHorizontalAlignment(JTextField.RIGHT); e1){t1.setText("ดัชนีสตริงอยู่นอกขอบเขต"); t1.setHorizontalAlignment(JTextField.RIGHT);} } }การแสดงผลการดำเนินงาน:
นี่เป็นเพียงเครื่องคิดเลขง่ายๆ และคุณสามารถใช้มันเพื่อปรับปรุงฟังก์ชันของเครื่องคิดเลขต่อไปได้