JTable เป็น subclass ของ JComponent สำหรับแสดงโครงสร้างข้อมูลซับซ้อน JTable ปฏิบัติตาม Model View Controller (MVC) design pattern แสดงข้อมูลใน rows และ columns JTable สร้าง TableModelListener, TableColumnModelListener, ListSelectionListener, CellEditorListener และ RowSorterListener interfaces เราสามารถตรวจจับ double click events ของ JTable ได้โดยใช้ MouseAdapter class หรือ MouseListener interface ตั้งค่า getClickCount() เป็น '2' ของ MouseEvent เพื่อตรวจจับ double click events ของ JTable
ตัวอย่าง
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public final class DoublClickJTableRowTest extends JFrame {
private JTable table;
private JScrollPane scrollPane;
public DoublClickJTableRowTest() {
setTitle("DoublClickJTableRow Test");
String[] columnNames = {"First Name", "Last Name"};
Object[][] data = {{"Raja", "Ramesh"}, {"Adithya", "Sai"}, {"Vineet", "Kumar"}, {"Krishna", "Kasyap"}};
table = new JTable(data, columnNames) {
public boolean editCellAt(int row, int column, java.util.EventObject e) {
return false;
}
};
table.setFocusable(false);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
if (me.getClickCount() == 2) { // ตรวจจับ double click events
JTable target = (JTable) me.getSource();
int row = target.getSelectedRow(); // เลือก row
int column = target.getSelectedColumn(); // เลือก column
JOptionPane.showMessageDialog(null, table.getValueAt(row, column)); // ดึงค่า row และ column
}
}
});
scrollPane = new JScrollPane(table);
add(scrollPane);
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new DoublClickJTableRowTest();
}
}
Output
