001 /*
002 * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package javax.swing.table;
027
028 import javax.swing.*;
029 import javax.swing.event.*;
030
031 /**
032 * The <code>TableModel</code> interface specifies the methods the
033 * <code>JTable</code> will use to interrogate a tabular data model. <p>
034 *
035 * The <code>JTable</code> can be set up to display any data
036 * model which implements the
037 * <code>TableModel</code> interface with a couple of lines of code: <p>
038 * <pre>
039 * TableModel myData = new MyTableModel();
040 * JTable table = new JTable(myData);
041 * </pre><p>
042 *
043 * For further documentation, see <a href="http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data">Creating a Table Model</a>
044 * in <em>The Java Tutorial</em>.
045 * <p>
046 * @version 1.33 05/05/07
047 * @author Philip Milne
048 * @see JTable
049 */
050
051 public interface TableModel {
052 /**
053 * Returns the number of rows in the model. A
054 * <code>JTable</code> uses this method to determine how many rows it
055 * should display. This method should be quick, as it
056 * is called frequently during rendering.
057 *
058 * @return the number of rows in the model
059 * @see #getColumnCount
060 */
061 public int getRowCount();
062
063 /**
064 * Returns the number of columns in the model. A
065 * <code>JTable</code> uses this method to determine how many columns it
066 * should create and display by default.
067 *
068 * @return the number of columns in the model
069 * @see #getRowCount
070 */
071 public int getColumnCount();
072
073 /**
074 * Returns the name of the column at <code>columnIndex</code>. This is used
075 * to initialize the table's column header name. Note: this name does
076 * not need to be unique; two columns in a table can have the same name.
077 *
078 * @param columnIndex the index of the column
079 * @return the name of the column
080 */
081 public String getColumnName(int columnIndex);
082
083 /**
084 * Returns the most specific superclass for all the cell values
085 * in the column. This is used by the <code>JTable</code> to set up a
086 * default renderer and editor for the column.
087 *
088 * @param columnIndex the index of the column
089 * @return the common ancestor class of the object values in the model.
090 */
091 public Class<?> getColumnClass(int columnIndex);
092
093 /**
094 * Returns true if the cell at <code>rowIndex</code> and
095 * <code>columnIndex</code>
096 * is editable. Otherwise, <code>setValueAt</code> on the cell will not
097 * change the value of that cell.
098 *
099 * @param rowIndex the row whose value to be queried
100 * @param columnIndex the column whose value to be queried
101 * @return true if the cell is editable
102 * @see #setValueAt
103 */
104 public boolean isCellEditable(int rowIndex, int columnIndex);
105
106 /**
107 * Returns the value for the cell at <code>columnIndex</code> and
108 * <code>rowIndex</code>.
109 *
110 * @param rowIndex the row whose value is to be queried
111 * @param columnIndex the column whose value is to be queried
112 * @return the value Object at the specified cell
113 */
114 public Object getValueAt(int rowIndex, int columnIndex);
115
116 /**
117 * Sets the value in the cell at <code>columnIndex</code> and
118 * <code>rowIndex</code> to <code>aValue</code>.
119 *
120 * @param aValue the new value
121 * @param rowIndex the row whose value is to be changed
122 * @param columnIndex the column whose value is to be changed
123 * @see #getValueAt
124 * @see #isCellEditable
125 */
126 public void setValueAt(Object aValue, int rowIndex, int columnIndex);
127
128 /**
129 * Adds a listener to the list that is notified each time a change
130 * to the data model occurs.
131 *
132 * @param l the TableModelListener
133 */
134 public void addTableModelListener(TableModelListener l);
135
136 /**
137 * Removes a listener from the list that is notified each time a
138 * change to the data model occurs.
139 *
140 * @param l the TableModelListener
141 */
142 public void removeTableModelListener(TableModelListener l);
143 }
|