วันอังคารที่ 4 มีนาคม พ.ศ. 2557

Java GUI การปรับขนาดของคอลัมน์ใน JTable (Setting and Changing Column Widths)

Java GUI การปรับขนาดของคอลัมน์ใน JTable (Setting and Changing Column Widths)

ตัวอย่างโค้ดโปรแกรมนี้ เป็นตัวอย่างโค้ดที่แสดงวิธีการปรับขนาดของคอลัมน์ใน JTable

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

import java.awt.BorderLayout;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableColumn;

public class JavaCodeExam extends JFrame {

private JFrame frame;

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();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

String[] columnNames = { "First Name", "Last Name", "Sport",
"# of Years", "Vegetarian" };

Object[][] data = {
{ "Kathy", "Smith", "Snowboarding", new Integer(5),
new Boolean(false) },
{ "John", "Doe", "Rowing", new Integer(3), new Boolean(true) },
{ "Sue", "Black", "Knitting", new Integer(2),
new Boolean(false) },
{ "Jane", "White", "Speed reading", new Integer(20),
new Boolean(true) },
{ "Joe", "Brown", "Pool", new Integer(10), new Boolean(false) } };

JTable table = new JTable(data, columnNames);
TableColumn column = null;
for (int i = 0; i < 5; i++) {
   column = table.getColumnModel().getColumn(i);
   if (i == 2) {
       column.setPreferredWidth(100); //third column is bigger
   } else {
       column.setPreferredWidth(50);
   }
}

panel.add(table.getTableHeader(), BorderLayout.PAGE_START);
panel.add(table);

this.frame.add(panel);
this.frame.setSize(400, 200);
}
}

ตัวอย่างโค้ดนี้แสดงการกำหนดขนาดของคอลัมน์ ใน JTable
ก่อนอื่นสร้าง TableColumn ขึ้นมาก่อนเพื่อเก็บคอลัมน์ของตาราง โดยใช้คำสั่ง table.getColumnModel().getColumn(i); เราวนลูปเพื่อนำแต่ละคอลัมน์มาเซ็ตขนาด

เราสามารถเซ็ตขนาดของคอลัมน์โดยใช้ setPreferredWidth(50);

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


yengo หรือ buzzcity

Java GUI การสร้างตารางโดยใช้ JTable (How to Creating a Simple Table)

Java GUI การสร้างตารางโดยใช้ JTable (How to Creating a Simple Table)

ตัวอย่างโค้ดตัวอย่างนี้เป็นการสร้างตารางแบบง่าย ๆ โดยใช้ Java

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

import java.awt.BorderLayout;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;

public class JavaCodeExam extends JFrame {

private JFrame frame;

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();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

String[] columnNames = { "First Name", "Last Name", "Sport",
"# of Years", "Vegetarian" };

Object[][] data = {
{ "Kathy", "Smith", "Snowboarding", new Integer(5),
new Boolean(false) },
{ "John", "Doe", "Rowing", new Integer(3), new Boolean(true) },
{ "Sue", "Black", "Knitting", new Integer(2),
new Boolean(false) },
{ "Jane", "White", "Speed reading", new Integer(20),
new Boolean(true) },
{ "Joe", "Brown", "Pool", new Integer(10), new Boolean(false) } };

JTable table = new JTable(data, columnNames);

panel.add(table.getTableHeader(), BorderLayout.PAGE_START);
panel.add(table);

this.frame.add(panel);
this.frame.setSize(400, 200);
}
}

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

จะทำการสร้างหัวของคอลัมน์ โดยมีรูปแบบดังนี้ String[] columnNames = { "First Name", "Last Name", "Sport", "# of Years", "Vegetarian" };

จากนั้นก็ทำการสร้างข้อมูลของตารางโดยมีรูปแบบดังนี้ Object[][] data = {
{ "Kathy", "Smith", "Snowboarding", new Integer(5),
new Boolean(false) },
{ "John", "Doe", "Rowing", new Integer(3), new Boolean(true) },
{ "Sue", "Black", "Knitting", new Integer(2),
new Boolean(false) },
{ "Jane", "White", "Speed reading", new Integer(20),
new Boolean(true) },
{ "Joe", "Brown", "Pool", new Integer(10), new Boolean(false) } };

เราจะสร้าง Table โดยใช้ JTable

จากนั้นจะทำการเซ็ตคอลัมน์ลงใน Panel โดยใช้คำสั่ง panel.add(table);

จากนั้นจะทำการแสดงหัวของตาราง โดยใช้คำสั่ง panel.add(table.getTableHeader(), BorderLayout.PAGE_START);

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


yengo หรือ buzzcity

วันจันทร์ที่ 3 มีนาคม พ.ศ. 2557

Java GUI การสร้างระบบล็อกอิน

Java GUI การสร้างระบบล็อกอิน

ตัวอย่างนี้เป็นตัวอย่างโค้ดการสร้างระบบล็อกอิน โดยจะมีการกรอก username กับ password แล้วนำไปเที่ยบกับตัวแปรว่า username กับ password ที่ได้กรอกเข้ามานั้น ถูกต้องหรือไม่

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

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;

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

public class JavaCodeExam extends JFrame implements ActionListener {

private JFrame frame;
private JPasswordField passwordField;
private JLabel showStatus;
private JTextField textField;
private Map<String, String> userAndPass = new HashMap<String, String>();

public static void main(String[] args) throws Exception {
JavaCodeExam codeExam = new JavaCodeExam();
codeExam.setUserAndPass("admin", "password");
codeExam.setUserAndPass("Test", "Test");
}

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();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();

JLabel labelUser = new JLabel("Input Username : ");
panel1.add(labelUser);

JLabel labelPass = new JLabel("Input Password : ");
panel2.add(labelPass);

this.textField = new JTextField(10);
panel1.add(this.textField);

this.passwordField = new JPasswordField(10);
panel2.add(this.passwordField);

JButton btn = new JButton("Login");
btn.addActionListener(this);
panel3.add(btn);

this.showStatus = new JLabel("Status : ");
panel4.add(this.showStatus);

panel.add(panel1);
panel.add(panel2);
panel.add(panel3);
panel.add(panel4);

this.frame.add(panel);
this.frame.setSize(400, 200);
}
private void setUserAndPass(String user, String pass){
this.userAndPass.put(user, pass);
}

@Override
public void actionPerformed(ActionEvent e) {
char[] pass = this.passwordField.getPassword();
String passStr = new String(pass);
String userStr = this.textField.getText();
String passTrue = this.userAndPass.get(userStr);
if(passStr.equals(passTrue)){
this.showStatus.setText("Status : Success");
}
else{
this.showStatus.setText("Status : Fail");
}
}
}

ใน method main เราได้เซ็ตค่าให้กับ object โดยการเซ็ต username กับ password 
เราได้สร้าง Panel ไว้ 5 Panel ซึ่งเป็น Panel ใหญ่ 1 อัน และ Panel ย่อยสำหรับแต่ละแถวอีก 4 อัน
Panel อันที่ 1 มีการเซ็ตตัวอักษรสำหรับแสดงกับ Text Field สำหรับไว้กรอก username
Panel อันที่ 2 มีการเซ็ตตัวอักษรสำหรับแสดงกับ Password Field สำหรับไว้กรอก password
Panel อันที่ 3 มีการเซ็ตปุ่มสำหรับกดแล้วให้เช็ค username กับ password
Panel อันที่ 4 มีการเซ็ต Label เพื่อแสดงค่า Status ว่าข้อมูลที่ได้กรอกนั้นถูกต้องหรือไม่

ใน actionPerformed เราได้ทำการ get ค่าจาก username กับ password และได้ทำการเช็คค่าว่าถูกหรือไม่ ถ้าข้อมูลถูกต้องจะแสดงข้อความว่า Status : Success ถ้าข้อมูลที่กรอกเข้ามาผิด จะแสดงข้อความว่า Status : Fail

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




yengo หรือ buzzcity

Java GUI การแสดงค่า Password Field โดย Java (How to Show Password Fields Value)

Java GUI การแสดงค่า Password Field โดย Java (How to Show Password Fields Value)

ตัวอย่างโค้ดโปรแกรมนี้เป็นตัวอย่างโค้ดโปรแกรมที่ใช้สำหรับแสดงค่า Password Field ซึ่งจะมีช่องสำหรับให้กรอก Password จากนั้นจะมีปุ่ม Show เมื่อกดแล้ว จะแสดงค่า Password ที่ได้กรอกเข้าไป

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

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.JPasswordField;

public class JavaCodeExam extends JFrame implements ActionListener {

private JFrame frame;
private JPasswordField passwordField;
private JLabel showPass;

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();

JLabel label = new JLabel("Input Password : ");
panel.add(label);

this.passwordField = new JPasswordField(10);
panel.add(this.passwordField);

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

this.showPass = new JLabel("");
panel.add(this.showPass);

this.frame.add(panel);
this.frame.setSize(400, 300);
}

@Override
public void actionPerformed(ActionEvent e) {
char[] pass = this.passwordField.getPassword();
this.showPass.setText(new String(pass));
}
}

ตัวอย่างนี้เราสร้าง Panel ไว้สำหรับเก็บส่วนต่าง ๆ 
เราได้สร้าง label สำหรับโชว์ข้อความว่าให้กรอกอะไร 
เราได้สร้าง passwordField ไว้สำหรับช่องให้กรอก password
เราได้สร้าง JButton ไว้สำหรับปุ่มกดที่แสดงค่าว่า Show
เราได้สร้าง showPass สำหรับไว้โชว์ password ที่กรอกเข้าไป

ใน method ที่ชื่อว่า actionPerformed เราได้ get ค่าจาก passwordField  โดยใช้ getPassword ซึ่ง method นี้จะ return ค่าออกมาเป็น Array ของ char

เราได้ทำการแปลง Array ของ char มาเป็น String ด้วยการ new String จากนั้นก็นำไปเซ็ตใส่ showPass

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


yengo หรือ buzzcity

Java GUI การใช้ Password Field โดย Java (How to Use Password Fields)

Java GUI การใช้ Password Field โดย Java (How to Use Password Fields)

ตัวอย่างนี้เป็นการสร้าง textbox ที่เป็นชนิด password โดยการใช้ Java โดยในการสร้าง Password Field นั้น จะใช้ JPasswordField ในการสร้างขึ้นมา

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

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

public class JavaCodeExam extends JFrame {

private JFrame frame;

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();

JLabel label = new JLabel("Input Password : ");
panel.add(label);

JPasswordField passwordField = new JPasswordField(10);
panel.add(passwordField);

JButton btn = new JButton("OK");
panel.add(btn);

this.frame.add(panel);
this.frame.setSize(400, 300);
}
}

ตัวอย่างนี้เราใช้ JPasswordField ในการสร้าง Password Field แล้วก็สร้าง Panel สำหรับเก็บ JPasswordField เราได้สร้าง JLabel เพื่อแสดงข้อความ และได้สร้างปุ่มไว้

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


yengo หรือ buzzcity

Java GUI สร้างปุ่มปิดตรงเมนู (Exit Button from a MenuItem/MenuBar)

Java GUI สร้างปุ่มปิดตรงเมนู (Exit Button from a MenuItem/MenuBar)

ตัวอย่างนี้ เป็นการสร้างเมนูโดยมีปุ่มสำหรับปิด Frame 

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

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

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class JavaCodeExam extends JFrame implements ActionListener {

private JFrame frame;

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);

// Create the menu bar.
JMenuBar menuBar = new JMenuBar();

JMenu menu1 = new JMenu("Menu1");
JMenu menu2 = new JMenu("Menu2");

JMenuItem menuItem1 = new JMenuItem("Menu1 Item1", KeyEvent.VK_T);
JMenuItem menuItem2 = new JMenuItem("Menu1 Item2", KeyEvent.VK_T);
JMenuItem menuItem3 = new JMenuItem("Exit", KeyEvent.VK_T);

menuItem3.addActionListener(this);

menu1.add(menuItem1);
menu1.add(menuItem2);
menu1.add(menuItem3);

menuBar.add(menu1);
menuBar.add(menu2);

JPanel panel = new JPanel();
panel.add(menuBar);

frame.add(panel);

frame.setSize(400, 300);
}

@Override
public void actionPerformed(ActionEvent e) {
this.frame.setVisible(false);
this.frame.dispose();
}
}

ตัวอย่างนี้ เราใช้ JMenuBar, JMenu, JMenuItem ในการสร้างเมนู ซึ่งอันดับแรกก็สร้าง JMenuBar ก่อนจากนั้นก็สร้าง JMenu แล้วก็สร้าง JMenuItem เมื่อสร้างได้แล้ว ก็นำ JMenuItem ในเพิ่มใน JMenu จากนั้นก็นำ JMenu ในเพิ่มใน JMenuBar

จาก JMenuItem เราสร้างชื่อที่ว่า Exit ไว้ จากนั้นก็ addActionListener ไว้ และใน method ที่ชือว่า actionPerformed เราก็ทำการปิดโปรแกรม โดยใช้คำสั่ง setVisible ให้เป็น false และก็ใช้ method dispose

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


yengo หรือ buzzcity

วันอาทิตย์ที่ 2 มีนาคม พ.ศ. 2557

Java GUI ตัวอย่างโค้ดการสร้างเมนูโดยใช้ JMenuBar, JMenu แล JMenuItem

Java GUI ตัวอย่างโค้ดการสร้างเมนูโดยใช้ JMenuBar, JMenu แล JMenuItem

ตัวอย่างโค้ดโปรแกรมนี้เป็นตัวอย่างโค้ดการสร้างเมนูสำหรับไว้คลิกเลือก โดยในการสร้างเมนูนั้น จะใช้ JMenuBar, JMenu และ JMenuItem ในการสร้าง

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

import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class JavaCodeExam {

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

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

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

// Create the menu bar.
JMenuBar menuBar = new JMenuBar();

JMenu menu1 = new JMenu("Menu1");
JMenu menu2 = new JMenu("Menu2");

JMenuItem menuItem1 = new JMenuItem("Menu1 Item1", KeyEvent.VK_T);
JMenuItem menuItem2 = new JMenuItem("Menu1 Item2", KeyEvent.VK_T);
JMenuItem menuItem3 = new JMenuItem("Menu1 Item3", KeyEvent.VK_T);
menu1.add(menuItem1);
menu1.add(menuItem2);
menu1.add(menuItem3);

menuBar.add(menu1);
menuBar.add(menu2);

JPanel panel = new JPanel();
panel.add(menuBar);

frame.add(panel);

frame.setSize(400, 300);
}
}

ตัวอย่างนี้ เราใช้ JMenuBar, JMenu, JMenuItem ในการสร้างเมนู ซึ่งอันดับแรกก็สร้าง JMenuBar ก่อนจากนั้นก็สร้าง JMenu แล้วก็สร้าง JMenuItem เมื่อสร้างได้แล้ว ก็นำ JMenuItem ในเพิ่มใน JMenu จากนั้นก็นำ JMenu ในเพิ่มใน JMenuBar

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


yengo หรือ buzzcity

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

๋Java GUI โปรแกรมบวกเลข ที่ดัก Exception แล้ว

Java GUI โปรแกรมบวกเลข ที่ดัก Exception แล้ว

ตัวอย่างโค้ดในบทความ เรายังไม่ได้ดัก Exception ซึ่งจะทำให้เกิด 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)

ดังนั้น ในตัวอย่างโค้ดนี้เรามาดูตัวอย่างโค้ดที่ได้ทำการดัก Exception กันคับ

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

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) {
try {
double val1 = Double.parseDouble(this.txtField1.getText());
double val2 = Double.parseDouble(this.txtField2.getText());
this.lblAns.setText((val1 + val2) + "");
} catch (NumberFormatException ex) {
ex.printStackTrace();
this.lblAns.setText("Cannot a Number");
} catch (Exception ex) {
ex.printStackTrace();
this.lblAns.setText(ex.getMessage());
}
}
}

ตัวอย่างนี้เราได้ทำการเพิ่ม try catch ให้กับโค้ด และดักจับ Exception โดยถ้าเกิด NumberFormatException ให้แสดงข้อความว่า Cannot a Number แต่ถ้าเกิด Exception อื่น ๆ จะแสดง message exception นั้น ๆ 

ใน catch เราได้ใส่ Exception ไว้ในตัวแปร ex และได้ทำการ printStackTrace เพื่อแสดงค่า Exceeption ใน Console

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


yengo หรือ buzzcity

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