วันเสาร์ที่ 1 มีนาคม พ.ศ. 2557

Java GUI โปรแกรมบวกเลข

Java GUI โปรแกรมบวกเลข

ตัวอย่างนี้เป็นตัวอย่างโค้ดโปรแกรม Java GUI โปรแกรมบวกเลข โดยจะมีช่องให้กรอก 2 ช่อง จากนั้นเมื่อกดปุ่มจะแสดงค่าที่ได้จากการกรอกช่องแรกกับช่องที่สอง มาบวกกัน แล้วแสดงออกทางขวาสุด

ตัวอย่างโค้ด

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class JavaCodeExam extends JFrame implements ActionListener {

private JFrame frame;
private JTextField txtField1;
private JTextField txtField2;
private JLabel lblAns;

public static void main(String[] args) throws Exception {
new JavaCodeExam();
}

public JavaCodeExam() {
this.frame = new JFrame();
this.frame.setVisible(true);

this.frame.setTitle("Frame By Java Code Exam");
this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();

this.txtField1 = new JTextField(5);
this.txtField2 = new JTextField(5);
panel.add(this.txtField1);
panel.add(new JLabel(" + "));
panel.add(this.txtField2);

JButton btnAlert = new JButton("=");
btnAlert.addActionListener(this);
panel.add(btnAlert);

this.lblAns = new JLabel();
panel.add(this.lblAns);

this.frame.add(panel);
this.frame.pack();
this.frame.setSize(500, 200);
this.frame.setLocation(10, 10);
}

@Override
public void actionPerformed(ActionEvent e) {
double val1 = Double.parseDouble(this.txtField1.getText());
double val2 = Double.parseDouble(this.txtField2.getText());
this.lblAns.setText((val1 + val2) + "");
}
}

จากโค้ด เราสร้าง Class ที่ extends มาจาก JFrame และได้ implements ActionListener จากนั้นเราสร้างตัวแปรระดับ Object ไว้ 4 ตัวแปร นั่นคื private JFrame frame; private JTextField txtField1; private JTextField txtField2; private JLabel lblAns; เพื่อสำหรับเก็บ frame เก็บ textField ทั้งสองตัว และเก็บ Label สำหรับแสดงค่าที่ได้

จากนั้นก็ทำการจัดตำแหน่งของ ปุ่ม ช่องสำหรับกรอก ข้อความแสดง และอื่น ๆ

ใน actionPerformed เราได้ ทำการ get ค่าออกมาจาก textField โดยใช้ method ที่ชื่อว่า getText เมื่อได้แล้ว ก็นำมา parse เป็น Double จากนั้นเมื่อได้ค่าแล้วก็นำค่าทั้งสองค่ามาบวกกัน แล้วก็มา set ค่าให้กับ Label โดยใช้ method ที่ชื่อว่า setText

จากโค้ด เราไม่ได้ทำการดักจับเหตุการณ์ที่ทำให้เกิด Exception

ตัวอย่างเมื่อเรากรอกข้อความ asdf ซึ่งไม่ใช่ตัวเลข ดังนั้นจึงแปลงเป็นตัวเลขไม่ได้ ทำให้เกิด Exception ดังนี้

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "asdf"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at com.doesystem.JavaCodeExam.actionPerformed(JavaCodeExam.java:53)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

ผลลัพธ์ที่ได้



yengo หรือ buzzcity

ไม่มีความคิดเห็น :

แสดงความคิดเห็น