Mega Code Archive

 
Categories / Java by API / Javax Swing Table
 

TableColumnModel

import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; 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.table.AbstractTableModel; import javax.swing.table.TableModel; public class MainClass extends JFrame {   public MainClass() {     super("Selection Model Test");     setSize(450, 350);     setDefaultCloseOperation(EXIT_ON_CLOSE);     TableModel tm = new AbstractTableModel() {       public int getRowCount() {         return 10;       }       public int getColumnCount() {         return 10;       }       public Object getValueAt(int r, int c) {         return "0";       }     };     final JTable jt = new JTable(tm);     JScrollPane jsp = new JScrollPane(jt);     getContentPane().add(jsp, BorderLayout.CENTER);     JPanel controlPanel, buttonPanel, columnPanel, rowPanel;     buttonPanel = new JPanel();     final JCheckBox cellBox, columnBox, rowBox;     cellBox = new JCheckBox("Cells", jt.getCellSelectionEnabled());     columnBox = new JCheckBox("Columns", jt.getColumnSelectionAllowed());     rowBox = new JCheckBox("Rows", jt.getRowSelectionAllowed());          cellBox.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent ae) {         jt.setCellSelectionEnabled(cellBox.isSelected());         columnBox.setSelected(jt.getColumnSelectionAllowed());         rowBox.setSelected(jt.getRowSelectionAllowed());       }     });     columnBox.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent ae) {         jt.setColumnSelectionAllowed(columnBox.isSelected());         cellBox.setSelected(jt.getCellSelectionEnabled());       }     });     rowBox.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent ae) {         jt.setRowSelectionAllowed(rowBox.isSelected());         cellBox.setSelected(jt.getCellSelectionEnabled());       }     });     buttonPanel.add(new JLabel("Selections allowed:"));     buttonPanel.add(cellBox);     buttonPanel.add(columnBox);     buttonPanel.add(rowBox);     columnPanel = new JPanel();     ListSelectionModel csm = jt.getColumnModel().getSelectionModel();     JLabel columnCounter = new JLabel("Selected Column Indices:");     csm.addListSelectionListener(new SelectionDebugger(columnCounter, csm));     columnPanel.add(new JLabel("Selected columns:"));     columnPanel.add(columnCounter);     rowPanel = new JPanel();     ListSelectionModel rsm = jt.getSelectionModel();     JLabel rowCounter = new JLabel("Selected Row Indices:");     rsm.addListSelectionListener(new SelectionDebugger(rowCounter, rsm));     rowPanel.add(new JLabel("Selected rows:"));     rowPanel.add(rowCounter);     controlPanel = new JPanel(new GridLayout(0, 1));     controlPanel.add(buttonPanel);     controlPanel.add(columnPanel);     controlPanel.add(rowPanel);     getContentPane().add(controlPanel, BorderLayout.SOUTH);   }   public static void main(String args[]) {     MainClass se = new MainClass();     se.setVisible(true);   }   public class SelectionDebugger implements ListSelectionListener {     JLabel debugger;     ListSelectionModel model;     public SelectionDebugger(JLabel target, ListSelectionModel lsm) {       debugger = target;       model = lsm;     }     public void valueChanged(ListSelectionEvent lse) {       if (!lse.getValueIsAdjusting()) {         StringBuffer buf = new StringBuffer();         int[] selection = getSelectedIndices(model.getMinSelectionIndex(), model             .getMaxSelectionIndex());         if (selection.length == 0) {           buf.append("none");         } else {           for (int i = 0; i < selection.length - 1; i++) {             buf.append(selection[i]);             buf.append(", ");           }           buf.append(selection[selection.length - 1]);         }         debugger.setText(buf.toString());       }     }     protected int[] getSelectedIndices(int start, int stop) {       if ((start == -1) || (stop == -1)) {         return new int[0];       }       int guesses[] = new int[stop - start + 1];       int index = 0;       for (int i = start; i <= stop; i++) {         if (model.isSelectedIndex(i)) {           guesses[index++] = i;         }       }       int realthing[] = new int[index];       System.arraycopy(guesses, 0, realthing, 0, index);       return realthing;     }   } }