Rambler's Top100

А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Э Ю Я

Все примеры | Примеры по пакетам

Таблица из модели пользователя с обработкой клика мышью по столбцу


//Таблица из модели пользователя с обработкой клика мышью по столбцу.
//Модель таблицы создается из векторов
package jtable;

import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.Vector;
import javax.swing.JDialog;
import javax.swing.JOptionPane;

public class TableCustomModelDemo extends JPanel {
  private boolean DEBUG = true;
 Vector< Vector> rows = new Vector< Vector>();
 Vector row = new Vector();
 Vector columns = new Vector();
 JTable table;
  public TableCustomModelDemo() {
    super(new GridLayout(1, 0));

        row.add( "a1" );
        row.add( "b1" );
        row.add( "c1" );
        rows.add( row );
        row = new Vector();
        row.add( "a2" );
        row.add( "b2" );
        row.add( "b3" );
        rows.add( row );
        columns.add ( "a" );
        columns.add ( "b" );
        columns.add ( "c" );
    table = new JTable(new CustomTableModel());
    table.setPreferredScrollableViewportSize(new Dimension(500, 70));
     table.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tableMouseClicked(evt);
            }
        });
    JScrollPane scrollPane = new JScrollPane(table);
    add(scrollPane);
  }
private void tableMouseClicked(java.awt.event.MouseEvent evt) {
        Component source = (Component) evt.getSource();
        int col= table.getSelectedColumn();
        System.out.println("col  "+col);
     if(col==(table.getModel().getColumnCount()-1)){
      JOptionPane optionPane = new JOptionPane();
        optionPane.setMessage("Привет!");
        optionPane.setMessageType(JOptionPane.INFORMATION_MESSAGE);
        JDialog dialog = optionPane.createDialog(source,
            "Кнопка");
        dialog.show();
     }
    }
  class CustomTableModel extends AbstractTableModel {

   
    public int getColumnCount() {
        return columns.size();
    }

    public int getRowCount() {
        return rows.size();
 
    }

    public String getColumnName(int col) {
        return columns.get(col).toString();
    }

    public Object getValueAt(int row, int col) {

         return rows.get(row).get(col);
    }

    public Class getColumnClass(int c) {
      return getValueAt(0, c).getClass();
    }

    public boolean isCellEditable(int row, int col) {

        return true;
    }

    public void setValueAt(Object value, int row, int col) {
      if (DEBUG) {
        System.out.println("Задание значения ячейки " + row + "," + col
            + " в " + value );
      }
    Vector row1 = new Vector();
    row1=rows.get(row);
    row1.remove(col);
    row1.add(col,value);
    rows.remove(row);
    rows.add(row,row1);
    fireTableCellUpdated(row, col);

      if (DEBUG) {
        System.out.println("Новые значения в таблице:");
        printDebugData();
      }
    }

    private void printDebugData() {
      int numRows = getRowCount();
      int numCols = getColumnCount();

      for (int i = 0; i <  numRows; i++) {
        System.out.print("    row " + i + ":");
        for (int j = 0; j <  numCols; j++) {
            System.out.print("  " +rows.get(i).get(j));
        }
        System.out.println();
      }
      System.out.println("--------------------------");
    }
  }

  private static void createAndShowGUI() {

    JFrame jframe = new JFrame("Таблица из модели пользователя");
    jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    TableCustomModelDemo newContentPane = new TableCustomModelDemo();
    newContentPane.setOpaque(true);
    jframe.setContentPane(newContentPane);
    jframe.pack();
    jframe.setVisible(true);
  }

  public static void main(String[] args) {

    javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        createAndShowGUI();
      }
    });
  }
}


06.02.2009

Rambler's Top100


Ассоциативные ссылки