tabledemo2.java

来自「java 完全探索的随书源码」· Java 代码 · 共 101 行

JAVA
101
字号
// TableDemo2.java

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

import java.awt.event.*;

class TableDemo2 extends JFrame implements TableModelListener
{
   TableDemo2 (String title)
   {
      super (title);

      addWindowListener (new WindowAdapter ()
                         {
                             public void windowClosing (WindowEvent e)
                             {
                                System.exit (0);
                             }
                         });


      JTable jt = new JTable (new MyTableModel ());
//      jt.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
      jt.getModel ().addTableModelListener (this);

      getContentPane ().add (jt);

      setSize (300, 90);
      setVisible (true);
   }

   public void tableChanged (TableModelEvent e)
   {
      System.out.println ("Affected column = " + e.getColumn ());
      System.out.println ("First affected row = " + e.getFirstRow ());
      System.out.println ("Last affected row = " + e.getLastRow ());
   }

   public static void main (String [] args)
   {
      new TableDemo2 ("Table Demo2");
   }
}

class MyTableModel extends AbstractTableModel
{
   private String [][] data =
   {
      { "1", "Introduction" },
      { "2", "What Java can do for you" },
      { "3", "Java architecture" },
      { "4", "Installing Java" },
      { "5", "JDK tools" }
   };

   private String [] columnNames =
   {
      "Chapter Number",
      "Chapter Title"
   };

   public int getRowCount ()
   {
      return data.length;
   }

   public int getColumnCount ()
   {
      // Assume that all rows have the same number of columns.
      // As you probably know, it is possible for each row in
      // a Java array to have a different number of columns.

      return data [0].length;
   }

   public Object getValueAt (int row, int column)
   {
      return data [row] [column];
   }

   public boolean isCellEditable (int row, int column)
   {
      return (column == 1) ? false : true;
   }

   public void setValueAt (Object value, int row, int col)
   {
      if (value instanceof String)
      {
          data [row] [col] = (String) value;

          // Must fire a table model event so that views are
          // notified about the change to the table's model.

          fireTableCellUpdated (row, col);
      }
   }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?