import java.awt.Dimension;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class Main implements ListSelectionListener {
String[] headings = { "Name", "Customer ID", "Order #", "Status" };
Object[][] data = { { "A", new Integer(3), "0", new Date() },
{ "B", new Integer(6), "4", new Date() }, { "C", new Integer(9), "9", new Date() },
{ "D", new Integer(7), "1", new Date() }, { "E", new Integer(4), "1", new Date() },
{ "F", new Integer(8), "2", new Date() }, { "G", new Integer(6), "1", new Date() } };
JTable jtabOrders = new JTable(data, headings);
TableModel tm;
Main() {
JFrame jfrm = new JFrame("JTable Event Demo");
jfrm.setSize(400, 200);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jtabOrders.setPreferredScrollableViewportSize(new Dimension(420, 62));
ListSelectionModel rowSelMod = jtabOrders.getSelectionModel();
ListSelectionModel colSelMod = jtabOrders.getColumnModel().getSelectionModel();
rowSelMod.addListSelectionListener(this);
colSelMod.addListSelectionListener(this);
tm = jtabOrders.getModel();
tm.addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent tme) {
if (tme.getType() == TableModelEvent.UPDATE) {
System.out.println("Cell " + tme.getFirstRow() + ", " + tme.getColumn() + " changed."
+ " The new value: " + tm.getValueAt(tme.getFirstRow(), tme.getColumn()));
}
}
});
jfrm.add(new JScrollPane(jtabOrders));
jfrm.setVisible(true);
}
public void valueChanged(ListSelectionEvent le) {
String str = "Selected Row(s): ";
int[] rows = jtabOrders.getSelectedRows();
for (int i = 0; i < rows.length; i++)
str += rows[i] + " ";
str += "Selected Column(s): ";
int[] cols = jtabOrders.getSelectedColumns();
for (int i = 0; i < cols.length; i++)
str += cols[i] + " ";
str += "Selected Cell: " + jtabOrders.getSelectedRow() + ", "
+ jtabOrders.getSelectedColumn();
System.out.println(str);
}
public static void main(String args[]) {
new Main();
}
}
14.65.Table Selection |
| 14.65.1. | ListSelectionModel rowSelMod = JTable.getSelectionModel(); |
| 14.65.2. | ListSelectionModel colSelMod = JTable.getColumnModel().getSelectionModel(); |
| 14.65.3. | JTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); |
| 14.65.4. | JTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
| 14.65.5. | JTable.setColumnSelectionAllowed(boolean b); |
| 14.65.6. | JTable.setRowSelectionAllowed(boolean b); |
| 14.65.7. | JTable.setCellSelectionEnabled(boolean b); |
| 14.65.8. | Handle selection and model change events for a JTable. |
| 14.65.9. | Get default selection mode:MULTIPLE_INTERVAL_SELECTION |
| 14.65.10. | Allow only single a selection |
| 14.65.11. | Allow selection to span one contiguous set of rows, visible columns, or block of cells |
| 14.65.12. | Allow multiple selections of rows, visible columns, or cell blocks (default) |
| 14.65.13. | Extend the selection to include all cells (5,3) |
| 14.65.14. | Deselect a cell: cell (3,2), All cells in the row and column containing (3,2) are deselected. |
| 14.65.15. | Row selection is enabled, Get the indices of the selected rows |
| 14.65.16. | Get selected row and selected index |
| 14.65.17. | Get the min and max ranges of selected cells |
| 14.65.18. | Check each cell in the min and max ranges of selected cells |
| 14.65.19. | Disabling Selections in a JTable Component |
| 14.65.20. | Getting the Anchor Cell in a JTable Component |
| 14.65.21. | Toggles the selection state, if it were called again, it exactly reverses the first call. |