รู้จักกับ Java กับ JFrame เครื่องมือหลักในการสร้าง GUI Window Form ด้วย JFrame |
รู้จักกับ Java กับ JFrame เครื่องมือหลักในการสร้าง GUI Window Form ด้วย JFrame ในการสร้าง Form แบบ GUI บน Java สิ่งที่เราจะได้พบเห็นกันอยู่คือ JFrame สำหรับ JFrame เป็น Class หลักที่นิยมนำมาใช้สร้าง Form กรอบที่เป็น Window ซึ่งหลังจากที่เราสร้าง Form ด้วย JFrame แล้ว เราจะสามารถออกแบบส่วนประกอบรายละเอียดของ GUI พวก Component Control การจัดวาง Layout ต่าง ๆ วางใน Frame ได้ตามต้องการ ในการใช้ Frame สามารถใช้ได้ทั้งของ AWT (java.awt.Frame) แต่อยากจะแนะนำให้ใช้ของ Swing JFrame (javax.swing.JFrame) เพราะได้รับความนิยม และสามารถใช้งานได้ง่าย พร้อม ๆ กับมีคุณสมบัติอื่น ๆ ที่ดีกว่า AWT พอสมควร
สำหรับการสร้าง Form ด้วย JFrame สามารถเริ่มต้นด้วยการ import ตัว Class ของ javax.swing.JFrame
import javax.swing.JFrame;
ทำการ import ตัว Class ของ JFrame จากนั้นใน Class ก็สามารถเรียกใช้ด้วยการ new JFrame ขึ้นมาได้ทันที
Example 1 ตัวอย่างการสร้าง JFrame แบบง่าย ๆ
package com.java.myapp;
import javax.swing.JFrame;
public class MyClass {
public static void main(String[] args) {
JFrame frame = new JFrame("A JFrame");
frame.setSize(250, 250);
frame.setLocation(300,200);
frame.setVisible(true);
}
}
Output
ตัวอย่างที่ได้
แต่ปกติแล้วการสร้าง JFrame เป็น Frame หลักจะนิยมใช้การ extends หรือ inheritance เข้ามาใน Class หลัก และการ extends ตัว Class ของ JFrame นั้น ในการเรียกใช้งานจะต้องประกาศ Class แบบ Contractor initial คือ หลังจากที่ Class ถูกเรียกใช้จะต้องมีการ Assign ค่าบางอย่างที่จำเป็นสำหรับการสร้าง Form
Example 2 ตัวอย่างการสร้าง JFrame ผ่านการ extends inheritance ตัว Class ของ JFrame
package com.java.myapp;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MyClass extends MyClass {
public static void main(String[] args) {
MyClass frame = new MyClass();
frame.setVisible(true);
}
public MyClass() {
// JFrame Property
super("ThaiCreate.Com Tutorial Java GUI"); // Title
setSize(300, 200);
setLocation(500, 280);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
// Text Label
JLabel welcome = new JLabel("Welcome to ThaiCreate.Com");
welcome.setBounds(70, 50, 164, 60);
getContentPane().add(welcome);
}
}
Output
ซึ่งในตัวอย่างที่ 2 จะได้รับความนิยมมากกว่า
จากทั้ง 2 ตัวอย่าง ในการสร้าง Form หรือ Frame หลักก็มีเพีงง่าย ๆ เท่านี้ จากนั้นถ้าเราต้องการสร้างพวก Component Controls ต่าง ๆ ก็สามารถจัดวางได้จากเหมือนกับในตัวอย่าง แต่ถ้าในกรณีทำผ่าน Visual GUI บน Eclipse หรือ Netbeans พวก Code เหล่านี้เราจะไม่ต้องมาเขียนเองให้ยุ่งยากเลย เพราะหลังจากที่เราออกแบบ GUI ผ่าน Visual จะมีการ Generate Code ของ Java มาให้อัตโนัมัติ
Example 3 การสร้าง GUI Form ด้วยโปรแกรม Netbeans IDE
คลิกขวาที่ Package เลือก New -> JFrame Form
ตั้งชื่อ Class และรายละเอียดอื่น ๆ
จะเห็นว่าใน GUI เรามองเป็น Visual Designer มีพวก Component Controls ต่าง ๆ ให้เราเลือกใช้ได้ตามสบาย และสามารถสลับมุมมองได้จาก Code และ Design
ทดสอบการรันได้ผลลัพธ์ดังรูป ทั้ง ๆ ที่เรายังไม่ได้เขียน Code เลย
เพิ่มเติมในกรณีที่ Form ย่อเป็นเล็ก ๆ ดังรูป
ปรับแต่งที่ Form -> Code -> Generate Resize Code
และจากที่เราใช้ Tools โปรแกรมจะ Genreate ตัว Code ให้ดังนี้
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.java.myapp;
/**
*
* @author WEERACHAI
*/
public class MyFormFirst extends javax.swing.JFrame {
/**
* Creates new form MyFormFirst
*/
public MyFormFirst() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(MyFormFirst.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(MyFormFirst.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(MyFormFirst.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(MyFormFirst.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyFormFirst().setVisible(true);
}
});
}
// Variables declaration - do not modify
// End of variables declaration
}
ซึ่งจะเห็นว่า Code ถูก Generate ขึ้นมามากมายจากโปรแกรม และบางอย่างก็ไม่มีความจำเป็น แต่ไม่แนะนำให้ทำการแก้ไข และในบางส่วนของ Code ที่เป็น Auto Generate Code โปรแกรม Netbeans จะไม่ให้เราแก้ไขได้อยู่แล้ว แต่จะสามารถเขียนเพิ่มได้เฉพาะในส่วนเท่านั้น
อ่านเพิ่มเติม
การปรับแต่ง JFrame พื้นฐาน เช่น Title / Maximum Window / Change Icon
พื้นฐานการสร้าง Controls บน GUI และการสร้าง Action Event Handler ให้กับ Control
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2013-08-18 17:53:35 /
2017-03-27 17:08:30 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|