ตัวอย่างต่อไปนี้ผมจะใช้ JTable เพื่อแสดงข้อมูลของ Student ซึ่งในที่นี้ผมจะใช้ คลาส Student เพื่อใช้เก็บข้อมูลของออปเจคต์แต่ละตัว โดยคลาสนี้จะมีแอทริบิวต์อยู่ด้วยกัน 3 ตัวคือ id name และ gpa ดังโค๊ดต่อไปนี้
// Student.java
public class Student { private String id; private String name; private double gpa; public Student(String id, String name,double gpa ) { this.id = id; this.name = name; this.gpa = gpa; } public double getGpa() { return gpa; } public void setGpa(double gpa) { this.gpa = gpa; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
ขั้นตอนต่อไปคือการสร้างคลาส model ให้กับ JTable เพื่อใช้ในการแสดงผล ในที่นี้ผมใช้
ArrayList ชนิด Student เพื่อเก็บข้อมูลของนักเรียนทุกคน ดังตัวอย่างโค๊ดต่อไปนี้
//StudentTableModel.java
import java.util.ArrayList; import javax.swing.table.AbstractTableModel; public class StudentTableModel extends AbstractTableModel { ArrayList<Student> students ; String[] header={"ID","Name","GPA"}; public StudentTableModel(){ students = new ArrayList<Student>(); initDatas(); } //กำหนดค่าเริ่มต้นให้กับข้อมูล private void initDatas(){ students.add(new Student("s001", "Suchart",3.5 )); students.add(new Student("s002", "Padping" ,3.4)); students.add(new Student("s003", "Lindum" ,1.25)); } @Override public String getColumnName(int columnId){ //return ชื่อของแต่ละ column ที่ต้องการแสดงใน table return header[columnId] ; } @Override public int getRowCount() { //return จำนวนแถวข้อมูลทั้งหมด return students.size(); } @Override public int getColumnCount() { //return จำนวนของ column return header.length ; } @Override public Object getValueAt(int rowIndex, int columnIndex) { if( students.isEmpty() ){ return null; }else{ Student s = students.get(rowIndex); //if you have more field should specify more case here switch(columnIndex){ case 0 : // id first return s.getId() ; case 1 : return s.getName(); case 2 : return s.getGpa() ; default : return null; } } } }
ต่อไปผมแสดงวิธีการสร้าง JTable ด้วย Netbeans IDE และการกำหนดค่าให้กับ table โดยใช้ model จากคลาสข้างต้นครับ
ก่อนอื่นสร้างไฟล์ชนิด JFrame Form ด้วย Netbeans ขึ้นมาและเพิ่มคอมโพเนนต์ JTable ให้ได้ดังรูป
จากนั้น คลิ๊กขวาที่ table เลือกเมนู Customize Code (เมนูอันที่ 2 จากด้านล่าง) จะปรากฏไดอะล็อกให้แก้ไขโค๊ดในส่วน Initialization Code ส่วนที่ 2 ให้เลือกเป็น custom property จากนั้นแก้ไขโค๊ดให้เป็นดังรูป จากนั้นกดปุ่ม OK
เมื่อเรารันไฟล์ดังกล่าวจะปรากฏผลลัพธ์ดังรูป
เท่านี้เราก็สามารถปรับแต่งให้ JTable ในโปรแกรมของเรามีความยืดหยุ่นได้ ยกตัวอย่างเช่นเราสามารถแก้ไขโค๊ดให้โหลดข้อมูลจากไฟล์หรือดาต้าเบสได้จากคลาส model ครับ
หวังว่าบทความนี้จะเป็นประโยชน์กับผู้ที่สนใจในการเขียนโปรแกรมภาษาจาวานะครับ แล้วพบกันใหม่ในบทความหน้าครับ : )
ส่งความเห็นที่ sarayut ยกเลิกการตอบ