blob: 3d3c73469918e51ac32dd6cea24306402f8c5dc0 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package javax.swing.table;
27
28import javax.swing.*;
29import javax.swing.event.*;
30
31/**
32 * The <code>TableModel</code> interface specifies the methods the
33 * <code>JTable</code> will use to interrogate a tabular data model. <p>
34 *
35 * The <code>JTable</code> can be set up to display any data
36 * model which implements the
37 * <code>TableModel</code> interface with a couple of lines of code: <p>
38 * <pre>
39 * TableModel myData = new MyTableModel();
40 * JTable table = new JTable(myData);
41 * </pre><p>
42 *
43 * For further documentation, see <a href="http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data">Creating a Table Model</a>
44 * in <em>The Java Tutorial</em>.
45 * <p>
46 * @author Philip Milne
47 * @see JTable
48 */
49
50public interface TableModel
51{
52 /**
53 * Returns the number of rows in the model. A
54 * <code>JTable</code> uses this method to determine how many rows it
55 * should display. This method should be quick, as it
56 * is called frequently during rendering.
57 *
58 * @return the number of rows in the model
59 * @see #getColumnCount
60 */
61 public int getRowCount();
62
63 /**
64 * Returns the number of columns in the model. A
65 * <code>JTable</code> uses this method to determine how many columns it
66 * should create and display by default.
67 *
68 * @return the number of columns in the model
69 * @see #getRowCount
70 */
71 public int getColumnCount();
72
73 /**
74 * Returns the name of the column at <code>columnIndex</code>. This is used
75 * to initialize the table's column header name. Note: this name does
76 * not need to be unique; two columns in a table can have the same name.
77 *
78 * @param columnIndex the index of the column
79 * @return the name of the column
80 */
81 public String getColumnName(int columnIndex);
82
83 /**
84 * Returns the most specific superclass for all the cell values
85 * in the column. This is used by the <code>JTable</code> to set up a
86 * default renderer and editor for the column.
87 *
88 * @param columnIndex the index of the column
89 * @return the common ancestor class of the object values in the model.
90 */
91 public Class<?> getColumnClass(int columnIndex);
92
93 /**
94 * Returns true if the cell at <code>rowIndex</code> and
95 * <code>columnIndex</code>
96 * is editable. Otherwise, <code>setValueAt</code> on the cell will not
97 * change the value of that cell.
98 *
99 * @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}