اكتب تطبيقًا يحاكي الآلة الحاسبة، باستخدام تخطيط اللوحة والشبكة، وإضافة مربع نص، و10 أزرار أرقام (0~9)، و4 أزرار جمع وطرح وضرب وقسمة، وزر علامة المساواة، وزر مسح، ومربع زر الجذر، زر مسافة للخلف، يتطلب عرض صيغة الحساب والنتائج في مربع النص، ويكون التأثير كما هو موضح في الشكل أدناه.
كود جافا للآلة الحاسبة البسيطة:
import javax.swing.*; import javax.swing.JTextField; import java.awt.*; import java.awt.event.*; import java.awt.Color; ActionListener { public JPanel p1 = new JPanel(); // إنشاء لوحة public JPanel p2 = new JPanel(); t1; // يستخدم مربع النص 1 لعرض معلومات الإدخال public JTextField t2; // يستخدم مربع النص 2 لعرض معلومات النتيجة تسمية JLabel الخاصة // معلومات التسمية StringBuffer str; ,y ; //x و y كلاهما معاملان int z; // Z يمثل العامل الذي تم النقر عليه. 0 يمثل "-"، 2 يمثل "*"، 3 يمثل "/" الخاص JButton b[. ] = جديد JButton[12] // إنشاء مصفوفة مكونة من 12 زرًا public JButton b1,b2,b3,b4,b5,b6,b7,b8; // زر الوظيفة الحسابية public Ex5_2() { super("Simple Calculator" / / اسم النافذة Container c = getContentPane(); // إنشاء كائن لوحة المحتوى t1 = new JTextField(30); t1.setEditable(false); // يمكن عرضه فقط، ولا يمكن تحريره t2 = new JTextField(30); t2.setEditable(false); // يمكن عرضه فقط، ولا يمكن تحريره label = new JLabel("مرحبًا بك في حاسبة إصدار 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 صفوف وعمود واحد for(int i=0;i<10;i++) // قم بتعيين تسميات للأزرار من 0 إلى 9 في المصفوفة وقم بتسجيل المستمعين { String s = ""+ أنا؛ ب [أنا] = جديد JButton(s); b[i].addActionListener(this); = new JButton("/"); b2= new JButton("Back"); b3= new JButton("*"); JButton("+"); b6= new JButton("Sqrt"); b7= new JButton("-"); new JButton("="); ; i<12;i++) { b[i].setForeground(Color.blue } b1.setForeground(Color.red); b5.setForeground(Color.red); b7.setForeground(Color.red); .blue); // أضف إلى اللوحة p1.add(b[7]); p1.add(b[8]); p1.add(b[9]); p1.add(b1); 6]); p1.add(b3); p1.add(b5); p1.add(b6);p1.add(b7); ;p1.add(b8); p1.setLayout(new GridLayout(4,5,5,5)); //تسجيل المستمع b[10].addActionListener(this); b[11].addActionListener(this); b1.addActionListener(this); b3.addActionListener(this); ) ) b7.addActionListener(this); // أضف اللوحة إلى لوحة المحتوى c.add(p2); 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) { Try { 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); يحصل الزر على قيمة 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); 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); Switch(z) { case 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; الحالة 1: t1.setText(""+(xy)); setHorizontalAlignment(JTextField.RIGHT);break; الحالة 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; الحالة 3: t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT) ;كسر; } } آخر 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); /إذا تم عرضه في البداية على أنه فارغ، فلا تفعل شيئًا {} else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT); ابحث عن الجذر التربيعي { x=Double.parseDouble(t1.getText().trim()); { t1.setText("استثناء تنسيق الرقم"); t1.setHorizontalAlignment(JTextField.RIGHT); .setLength(0); y=0d } else { 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) } else { t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); } } y=Double.parseDouble(t1.getText().trim()); } else { t1.setText(str.append(e.getActionCommand()).toString()); t1.setHorizontalAlignment(JTextField.RIGHT) ; y=Double.parseDouble(t1.getText().trim()); } } } Catch(NumberFormatException e1){ t1.setText("استثناء تنسيق الرقم"); e1){t1.setText("فهرس السلسلة خارج الحدود"); t1.setHorizontalAlignment(JTextField.RIGHT);} } }تجسيد العملية:
بهذا تنتهي برمجة آلة حاسبة Java البسيطة. آمل أن تلهم هذه المقالة الجميع لكتابة الآلات الحاسبة. هذه مجرد آلة حاسبة بسيطة، ويمكنك الاستمرار في استخدامها لتحسين وظائف الآلة الحاسبة.