TableColumn
represents all the attributes of a column in a
JTable
, such as width, resizibility, minimum and maximum width.
In addition, the TableColumn
provides slots for a renderer and
an editor that can be used to display and edit the values in this column.
It is also possible to specify renderers and editors on a per type basis
rather than a per column basis - see the
setDefaultRenderer
method in the JTable
class.
This default mechanism is only used when the renderer (or
editor) in the TableColumn
is null
.
The TableColumn
stores the link between the columns in the
JTable
and the columns in the TableModel
.
The modelIndex
is the column in the
TableModel
, which will be queried for the data values for the
cells in this column. As the column moves around in the view this
modelIndex
does not change.
Note: Some implementations may assume that all
TableColumnModel
s are unique, therefore we would
recommend that the same TableColumn
instance
not be added more than once to a TableColumnModel
.
To show TableColumn
s with the same column of
data from the model, create a new instance with the same
modelIndex
.
Warning:
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeansTM
has been added to the java.beans
package.
Please see java.beans.XMLEncoder
.
null
renderer and a
null
editor.
This method is intended for serialization.null
renderer and a null
editor.null
renderer and a
null
editor.TableColumn
with modelIndex
.
All TableColumn
constructors delegate to this one.
The modelIndex
is the index of the column
in the model which will supply the data for this column in the table.
The modelIndex
does not change as the columns are reordered
in the view. The width parameter is used to set both the
preferredWidth
for this
column and the initial width. The renderer and editor are the objects
used respectively to render and edit values in this column. When
these are null
, default values, provided by the
getDefaultRenderer
and getDefaultEditor
methods in the
JTable
class are used to
provide defaults based on the type of the data in this column.
This column-centric rendering strategy can be circumvented by overriding
the getCellRenderer
methods in the JTable
.
PropertyChangeListener
to the listener list.
The listener is registered for all properties.
A PropertyChangeEvent
will get fired in response to an
explicit call to setFont
, setBackground
,
or setForeground
on the
current component. Note that if the current component is
inheriting its foreground, background, or font from its
container, then no event will be fired in response to a
change in the inherited property.
The equals
method implements an equivalence relation
on non-null object references:
x
, x.equals(x)
should return
true
.
x
and y
, x.equals(y)
should return true
if and only if
y.equals(x)
returns true
.
x
, y
, and z
, if
x.equals(y)
returns true
and
y.equals(z)
returns true
, then
x.equals(z)
should return true
.
x
and y
, multiple invocations of
x.equals(y) consistently return true
or consistently return false
, provided no
information used in equals
comparisons on the
objects is modified.
x
,
x.equals(null)
should return false
.
The equals method for class Object
implements
the most discriminating possible equivalence relation on objects;
that is, for any non-null reference values x
and
y
, this method returns true
if and only
if x
and y
refer to the same object
(x == y
has the value true
).
Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.
TableCellEditor
used by the
JTable
to edit values for this column. When the
cellEditor
is null
, the JTable
uses a default editor based on the
class of the cells in that column. The default value for a
cellEditor
is null
.TableCellRenderer
used by the
JTable
to draw
values for this column. The cellRenderer
of the column
not only controls the visual look for the column, but is also used to
interpret the value object supplied by the TableModel
.
When the cellRenderer
is null
,
the JTable
uses a default renderer based on the
class of the cells in that column. The default value for a
cellRenderer
is null
.TableCellRenderer
used to draw the header of the
TableColumn
. When the headerRenderer
is
null
, the JTableHeader
uses its defaultRenderer
. The default value for a
headerRenderer
is null
.Object
used as the value for the header
renderer.identifier
object for this column.
Note identifiers are not used by JTable
,
they are purely a convenience for external use.
If the identifier
is null
,
getIdentifier()
returns getHeaderValue
as a default.TableColumn
. The
TableColumn
's width can't be made larger than this
either by the user or programmatically. The default maxWidth
is Integer.MAX_VALUE.TableColumn
. The
TableColumn
's width can't be made less than this either
by the user or programmatically. The default minWidth is 15.TableColumn
.
The default preferred width is 75.PropertyChangeListener
s added
to this TableColumn with addPropertyChangeListener().TableColumn
's
width, false otherwise. You can change the width programmatically
regardless of this setting. The default is true.TableColumn
. The default width is
75.java.util.Hashtable
.
The general contract of hashCode
is:
hashCode
method on each of
the two objects must produce the same integer result.
As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)
wait
methods.
The awakened thread will not be able to proceed until the current thread relinquishes the lock on this object. The awakened thread will compete in the usual manner with any other threads that might be actively competing to synchronize on this object; for example, the awakened thread enjoys no reliable privilege or disadvantage in being the next thread to lock this object.
This method should only be called by a thread that is the owner of this object's monitor. A thread becomes the owner of the object's monitor in one of three ways:
synchronized
statement
that synchronizes on the object.
Class,
by executing a
synchronized static method of that class.
Only one thread at a time can own an object's monitor.
wait
methods.
The awakened threads will not be able to proceed until the current thread relinquishes the lock on this object. The awakened threads will compete in the usual manner with any other threads that might be actively competing to synchronize on this object; for example, the awakened threads enjoy no reliable privilege or disadvantage in being the next thread to lock this object.
This method should only be called by a thread that is the owner
of this object's monitor. See the notify
method for a
description of the ways in which a thread can become the owner of
a monitor.
PropertyChangeListener
from the listener list.
The PropertyChangeListener
to be removed was registered
for all properties.TableCellRenderer
used by JTable
to draw individual values for this column.TableCellRenderer
used to draw the
TableColumn
's header to headerRenderer
.Object
whose string representation will be
used as the value for the headerRenderer
. When the
TableColumn
is created, the default headerValue
is null
.TableColumn
's identifier to
anIdentifier
.
Note: identifiers are not used by the JTable
,
they are purely a
convenience for the external tagging and location of columns.
TableColumn
's maximum width to
maxWidth
; also adjusts the width and preferred
width if they are greater than this value.TableColumn
's minimum width to
minWidth
; also adjusts the current width
and preferred width if they are less than this value.TableColumn
. As the TableColumn
is moved around in the view the model index remains constant.preferredWidth
.
If preferredWidth
exceeds the minimum or maximum width,
it is adjusted to the appropriate limiting value.
For details on how the widths of columns in the JTable
(and JTableHeader
) are calculated from the
preferredWidth
,
see the doLayout
method in JTable
.
JTable
, use setPreferredWidth
instead.
Like a layout manager in the
AWT, the JTable
adjusts a column's width automatically
whenever the
table itself changes size, or a column's preferred width is changed.
Setting widths programmatically therefore has no long term effect.
This method sets this column's width to width
.
If width
exceeds the minimum or maximum width,
it is adjusted to the appropriate limiting value.
TableColumn
to fit the width of its header cell.
This method does nothing if the header renderer is null
(the default case). Otherwise, it sets the minimum, maximum and preferred
widths of this column to the widths of the minimum, maximum and preferred
sizes of the Component delivered by the header renderer.
The transient "width" property of this TableColumn is also set to the
preferred width. Note this method is not used internally by the table
package.toString
method returns a string that
"textually represents" this object. The result should
be a concise but informative representation that is easy for a
person to read.
It is recommended that all subclasses override this method.
The toString
method for class Object
returns a string consisting of the name of the class of which the
object is an instance, the at-sign character `@
', and
the unsigned hexadecimal representation of the hash code of the
object. In other words, this method returns a string equal to the
value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())
The current thread must own this object's monitor. The thread
releases ownership of this monitor and waits until another thread
notifies threads waiting on this object's monitor to wake up
either through a call to the notify
method or the
notifyAll
method. The thread then waits until it can
re-obtain ownership of the monitor and resumes execution.
As in the one argument version, interrupts and spurious wakeups are possible, and this method should always be used in a loop:
synchronized (obj) { while (<condition does not hold>) obj.wait(); ... // Perform action appropriate to condition }This method should only be called by a thread that is the owner of this object's monitor. See the
notify
method for a
description of the ways in which a thread can become the owner of
a monitor.The current thread must own this object's monitor.
This method causes the current thread (call it T) to place itself in the wait set for this object and then to relinquish any and all synchronization claims on this object. Thread T becomes disabled for thread scheduling purposes and lies dormant until one of four things happens:
A thread can also wake up without being notified, interrupted, or timing out, a so-called spurious wakeup. While this will rarely occur in practice, applications must guard against it by testing for the condition that should have caused the thread to be awakened, and continuing to wait if the condition is not satisfied. In other words, waits should always occur in loops, like this one:
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout); ... // Perform action appropriate to condition }(For more information on this topic, see Section 3.2.3 in Doug Lea's "Concurrent Programming in Java (Second Edition)" (Addison-Wesley, 2000), or Item 50 in Joshua Bloch's "Effective Java Programming Language Guide" (Addison-Wesley, 2001).
If the current thread is interrupted by another thread while it is waiting, then an InterruptedException is thrown. This exception is not thrown until the lock status of this object has been restored as described above.
Note that the wait method, as it places the current thread into the wait set for this object, unlocks only this object; any other objects on which the current thread may be synchronized remain locked while the thread waits.
This method should only be called by a thread that is the owner
of this object's monitor. See the notify
method for a
description of the ways in which a thread can become the owner of
a monitor.
This method is similar to the wait
method of one
argument, but it allows finer control over the amount of time to
wait for a notification before giving up. The amount of real time,
measured in nanoseconds, is given by:
1000000*timeout+nanos
In all other respects, this method does the same thing as the method of one argument. In particular, wait(0, 0) means the same thing as wait(0).
The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until either of the following two conditions has occurred:
notify
method
or the notifyAll
method.
timeout
milliseconds plus nanos
nanoseconds arguments, has
elapsed.
The thread then waits until it can re-obtain ownership of the monitor and resumes execution.
As in the one argument version, interrupts and spurious wakeups are possible, and this method should always be used in a loop:
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout, nanos); ... // Perform action appropriate to condition }This method should only be called by a thread that is the owner of this object's monitor. See the
notify
method for a
description of the ways in which a thread can become the owner of
a monitor.