How to use : Java GUI JTable - Add Rows Data to JTable Model |
How to use : Java GUI JTable - Add Rows Data to JTable Model ตัวอย่างการเขียน Java GUI กับ JTable และรูปแบบการสร้าง Model ซึ่งเป็น Class สำหรับจัดเก็บและแปลงข้อมูลจากแหล่งต่าง ๆ มาไว้ที่ Model จากนั้น Model จะทำทำหน้านำข้อมูลที่ได้แสดงผลใน JTable และด้วยกระบวนการนี้เองเราสามารถที่จะใช้ Model ทำการเก็บค่าจาก Form ที่เรา Input ลงใน Model แล้วค่อยนำข้อมูลเหล่านั้นแสดงใน JTable
How to use : Java GUI JTable - Add Rows Data to JTable Model
Example 1 ตัวอย่างการสร้าง Model สำหรับจัดเก็บข้อมูลและแสดงผล JTable
MyForm.java
package com.java.myapp;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MyForm extends JFrame {
int line = 0;
private JTextField txtName;
private JTextField txtEmail;
private DefaultTableModel model;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
MyForm frame = new MyForm();
frame.setVisible(true);
}
});
}
/**
* Create the frame.
*/
public MyForm() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 490, 240);
setTitle("ThaiCreate.Com Java GUI Tutorial");
getContentPane().setLayout(null);
// ScrollPane for Table
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(48, 41, 370, 90);
getContentPane().add(scrollPane);
// Table
JTable table = new JTable();
scrollPane.setViewportView(table);
JLabel lblAdd = new JLabel("Add :");
lblAdd.setBounds(48, 142, 46, 14);
getContentPane().add(lblAdd);
// Name
txtName = new JTextField();
txtName.setToolTipText("Name");
txtName.setBounds(84, 142, 86, 20);
getContentPane().add(txtName);
// Email
txtEmail = new JTextField();
txtEmail.setToolTipText("Email");
txtEmail.setBounds(180, 142, 161, 20);
getContentPane().add(txtEmail);
// Model for Table
model = (DefaultTableModel)table.getModel();
model.addColumn("No");
model.addColumn("Name");
model.addColumn("Email");
// Rows 1
model.addRow(new Object[0]);
model.setValueAt(line + 1, line, 0);
model.setValueAt("Win", line, 1);
model.setValueAt("[email protected]", line, 2);
line = line + 1;
// Save
JButton btnSave = new JButton("Save");
btnSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// New Rows
model.addRow(new Object[0]);
model.setValueAt(line + 1, line, 0);
model.setValueAt(txtName.getText(), line, 1);
model.setValueAt(txtEmail.getText(), line, 2);
line = line + 1;
// Reset Text Field
txtName.setText("");
txtEmail.setText("");
}
});
btnSave.setBounds(351, 142, 67, 23);
getContentPane().add(btnSave);
}
}
Output
แสดง JTable จาก Model
ทดสอบเพิ่มข้อมูลลงใน Model และแสดงผลใน JTable
จะเห็นว่า JTable แสดงผลข้อมูล ซึ่งข้อมูลจะถูกเก็บไว้ใน Model
Example 2 การเพิ่ม Rows ของ Model แบบ Dynamic และแสดงผลใน JTable
MyForm.java
package com.java.myapp;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Timer;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class MyForm extends JFrame {
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
MyForm frame = new MyForm();
frame.setVisible(true);
}
});
}
/**
* Create the frame.
*/
public MyForm() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 485, 218);
setTitle("ThaiCreate.Com Java GUI Tutorial");
getContentPane().setLayout(null);
// Data Source
final CustomModel model = new CustomModel();
// Table
JTable table = new JTable(model);
getContentPane().add(table);
// Timer Loop Add Row
final String name = "Win";
final String email = "[email protected]";
Timer timer = new Timer(100, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.addRow(name,email);
}
});
timer.start();
// ScrollPane
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(69, 34, 358, 106);
getContentPane().add(scrollPane);
}
}
class CustomModel extends AbstractTableModel {
List<Member> dataRow;
String[] columnHeader = {"Id", "Name", "Email"};
int id = 0;
public CustomModel() {
dataRow = new ArrayList<Member>();
}
@Override
public String getColumnName(int column) {
return columnHeader[column];
}
@Override
public int getColumnCount() {
return columnHeader.length;
}
@Override
public int getRowCount() {
return dataRow.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Member member = dataRow.get(rowIndex);
switch (columnIndex) {
case 0:
return member.getId();
case 1:
return member.getName();
case 2:
return member.getEmail();
default:
return null;
}
}
public void addRow(String name,String email) {
id++;
dataRow.add(new Member(id,name, email));
int rowCount = getRowCount();
fireTableRowsInserted(rowCount, rowCount);
}
}
class Member {
private int id;
private String name;
private String email;
public Member(int id,String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Output
เป็นการเพิ่ม Rows แบบ Dynamic ซึ่งจะเพิ่มไปเรื่อย ๆ
คล้าย ๆ กับการโหลดข้อมูลแล้วแสดงผลใน JTable ทันที
อ่านเพิ่มเติม : Java Table (JTable) - Swing Example
Property & Method (Others Related) |
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2013-09-10 10:11:55 /
2017-03-27 22:06:08 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|