custrend.html

来自「java类库详细讲解」· HTML 代码 · 共 211 行

HTML
211
字号
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Creating a Custom Cell Renderer in a JTable Component
(Java Developers Almanac Example)
</TITLE>
<META CONTENT="Patrick Chan" NAME="AUTHOR">
<META CONTENT="Code Examples from The Java Developers Almanac 1.4" NAME="DESCRIPTION">
<META CONTENT="Addison-Wesley/Patrick Chan" NAME="OWNER">
<META CONTENT="3/20/02" NAME="revision">
<STYLE TYPE="text/css">
<!--     BODY CODE  {font-family: Courier, Monospace;           font-size: 11pt}    TABLE, BODY          {font-family: Verdana, Arial, Helvetica, sans-serif;           font-size: 10pt}    PRE   {font-family: Courier, Monospace;           font-size: 10pt}    H3    {font-family: Verdana, Arial, Helvetica, sans-serif;           font-size: 11pt}    A.eglink {text-decoration: none}    A:hover.eglink {text-decoration: underline}    -->
</STYLE>
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top"><font face="Times" size="6"><b>The Java Developers Almanac 1.4</b></font>
<br>
        Order this book from <a href="/cgi-bin/scripts/redirect.pl?l=ex&url=http://www.amazon.com/exec/obidos/ASIN/0201752808/xeo">Amazon</a>.
    </TD>
</TR>
<TR>
<TD align="right" valign="bottom">
<FORM method="get" action="/cgi-bin/search/find.pl">
<INPUT size="25" name="words" type="text"><INPUT value="Search" type="submit">
</FORM>
</TD>
</TR>
</TABLE>
<HR color="#6666cc">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
    &gt;
    <A HREF="../index.html">List of Packages</A>
    &gt;
    <B><A HREF="../javax.swing.table/pkg.html">javax.swing.table</A></B><font color="#666666" SIZE="-2">
        &nbsp;[62 examples]
        </font>
        &gt;
        <B><A HREF="../javax.swing.table/pkg.html#Cells">Cells</A></B><font color="#666666" SIZE="-2">
            &nbsp;[5 examples]
            </font>
</DIV><P>
  <h3>
    e927.  
    Creating a Custom Cell Renderer in a JTable Component</h3>

A table cell renderer needs to implement a single method,
<code>TableCellRenderer.getTableCellRendererComponent()</code> that returns a
component. For performance reasons, the renderer should not create a
new component each time <code>getTableCellRendererComponent()</code> is
called. Rather, it should return the same component (or one from a
set) every time.  Typically, the renderer can either hold onto a
component instance and return that component or it can be a subclass
of a component and return itself.

<P> The job of <code>getTableCellRendererComponent()</code> is to configure the
component based on the coordinates and value in the cell. The table
then uses the configured component and paints it on the screen. After
painting it, the table no longer needs the component.


<pre>
    JTable table = new JTable();
    // Add data...
    
    // Install the custom renderer on the first visible column
    int vColIndex = <font color="#0066ff"><i>0</i></font>;
    TableColumn col = table.getColumnModel().getColumn(vColIndex);
    col.setCellRenderer(new MyTableCellRenderer());
    
    // This renderer extends a component. It is used each time a
    // cell must be displayed.
    public class MyTableCellRenderer extends <font color="#0066ff"><i>JLabel</i></font> implements TableCellRenderer {
        // This method is called each time a cell in a column
        // using this renderer needs to be rendered.
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
            // 'value' is value contained in the cell located at
            // (rowIndex, vColIndex)
    
            if (isSelected) {
                // cell (and perhaps other cells) are selected
            }
    
            if (hasFocus) {
                // this cell is the anchor and the table has the focus
            }
    
            // Configure the component with the specified value
            <font color="#0066ff"><i>setText(value.toString())</i></font>;
    
            // Set tool tip if desired
            setToolTipText(<font color="#0066ff"><i>(String)value</i></font>);
    
            // Since the renderer is a component, return itself
            return this;
        }
    
        // The following methods override the defaults for performance reasons
        public void validate() {}
        public void revalidate() {}
        protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {}
        public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
    }
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
            &nbsp;Related Examples
        </font></td>
</tr>
</table>


e925. <a class="eglink" href="SetValue.html?l=rel">
    Getting and Setting a Cell Value in a JTable Component
</a>
<br>

e926. <a class="eglink" href="DefRender.html?l=rel">
    Using Built-in Cell Renderers and Editors in a JTable Component
</a>
<br>

e928. <a class="eglink" href="CustRendClass.html?l=rel">
    Creating a Class-based Custom Cell Renderer in a JTable Component
</a>
<br>

e929. <a class="eglink" href="CopyPaste.html?l=rel">
    Copying Cell Values to the Clipboard from a JTable Component
</a>
<br>


<table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td align="left">
<br>
        See also: 
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Column%20Heads">
    Column Heads
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Columns">
    Columns
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Editing">
    Editing
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Events">
    Events
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Layout">
    Layout
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Rows">
    Rows
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Scrolling">
    Scrolling
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Selection">
    Selection
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Sorting">
    Sorting
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Table%20Model">
    Table Model
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Tool%20Tips">
    Tool Tips
</a>&nbsp;&nbsp;

</td>
</tr>
</table>

<br>

<br>
<FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="0">
&copy; 2002 Addison-Wesley.
</FONT>
</BODY>
</HTML>

⌨️ 快捷键说明

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