📄 appendcol.htm
字号:
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Appending a Column to 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">
<META CONTENT="no-cache" HTTP-EQUIV="Pragma">
<LINK href="/almanac.css" media="screen" type="text/css" rel="stylesheet">
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
</TABLE>
<br>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top">
<h1>The Java Developers Almanac 1.4</h1>
<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">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD valign="top"><script type="text/javascript">
<!--
google_ad_client = "pub-6001183370374757";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_channel = "4777242811";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "6666CC";
google_color_url = "6666CC";
google_color_text = "000000";
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></TD><TD> </TD><TD valign="top">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
>
<A HREF="../index.html">List of Packages</A>
>
<A HREF="../javax.swing.table/pkg.html">javax.swing.table</A><font color="#666666" class="xsmall-font">
[62 examples]
</font>
>
<B><A HREF="../javax.swing.table/pkg.html#Columns">Columns</A></B><font color="#666666" class="xsmall-font">
[11 examples]
</font>
</DIV><P>
<h3>e920. Appending a Column to a JTable Component</h3>
To add a column to a <code>JTable</code> component, the component must use a table
model that supports this operation. A simple implementation of such a
table model is <code>DefaultTableModel</code>.
<P> The simplest way to add a column to a <code>JTable</code> component
using a <code>DefaultTableModel</code> table model is to call
<code>DefaultTableModel.addColumn()</code>. You need only supply the name and
data for the new column and a new visible column will appear in the
table. However, this method of column creation is not suitable after
existing columns have undergone customizations or after the user has
made adjustments to the existing columns. All customizations and
adjustments are lost after the new column is added. For example, if
you've installed a special renderer on one of the columns or if the
user has moved a column, all these changes will be lost when the new
column is added. In fact, if you remove a column (but did not remove
the column data), the column will reappear after the new column is
added.
<P> This example provides a routine that will add a column without
affecting the state of the existing columns. In order for the routine
to work, the <code>autoCreateColumnsFromModel</code> property must be set to
false. This property causes the table component to rebuild all the
columns when a column is added to the table model. When set to false,
the table component will no longer add a visible column when a column
is added to the table model. This step must now be done explicitly.
<pre> DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
// Add a column using the simple method
model.addColumn(<font color="#0066ff"><i>"Col1"</i></font>);
// Add a column with values.
// The list of values are appended to the end of the
// existing rows. However, if there are more column values
// than there are rows, new rows with null values are
// created to accommodate the extra column values.
model.addColumn(<font color="#0066ff"><i>"Col2"</i></font>, new Object[]{<font color="#0066ff"><i>"v2"</i></font>});
// there is now 1 row with 2 columns
// Disable autoCreateColumnsFromModel
table.setAutoCreateColumnsFromModel(false);
// Add a column without affecting existing columns
betterAddColumn(table, <font color="#0066ff"><i>"Col3"</i></font>, new Object[]{<font color="#0066ff"><i>"v3"</i></font>});
// This method adds a new column to table without reconstructing
// all the other columns.
public void betterAddColumn(JTable table, Object headerLabel,
Object[] values) {
DefaultTableModel model = (DefaultTableModel)table.getModel();
TableColumn col = new TableColumn(model.getColumnCount());
// Ensure that auto-create is off
if (table.getAutoCreateColumnsFromModel()) {
throw new IllegalStateException();
}
col.setHeaderValue(headerLabel);
table.addColumn(col);
model.addColumn(headerLabel.toString(), values);
}
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
<b>Related Examples</b></font></td>
</tr>
</table>
e915. <a class="eglink" href="ConvertColIndex.html?l=rel">
Converting a Column Index Between the View and Model in a JTable Component
</a>
<br>
e916. <a class="eglink" href="EnumCols.html?l=rel">
Enumerating the Columns in a JTable Component
</a>
<br>
e917. <a class="eglink" href="ColSize.html?l=rel">
Setting the Width of a Column in a JTable Component
</a>
<br>
e918. <a class="eglink" href="ColResize.html?l=rel">
Setting the Column Resize Mode of a JTable Component
</a>
<br>
e919. <a class="eglink" href="LockCol.html?l=rel">
Locking the Width of a Column in a JTable Component
</a>
<br>
e921. <a class="eglink" href="InsertCol.html?l=rel">
Inserting a Column in a JTable Component
</a>
<br>
e922. <a class="eglink" href="RemCol.html?l=rel">
Removing a Column from a JTable Component
</a>
<br>
e923. <a class="eglink" href="MoveCol.html?l=rel">
Moving a Column in a JTable Component
</a>
<br>
e924. <a class="eglink" href="NoHeadMove.html?l=rel">
Allowing the User to Move a Column in a JTable Component
</a>
<br>
e925. <a class="eglink" href="NoResizeHead.html?l=rel">
Allowing the User to Resize a Column in 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#Cells">
Cells
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Column%20Heads">
Column Heads
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Editing">
Editing
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Events">
Events
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Layout">
Layout
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Rows">
Rows
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Scrolling">
Scrolling
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Selection">
Selection
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Sorting">
Sorting
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Table%20Model">
Table Model
</a>
<a class="eglink" href="/egs/javax.swing.table/pkg.html?l=rel#Tool%20Tips">
Tool Tips
</a>
</td>
</tr>
</table>
<br>
<br>
<FONT class="xsmall-font">
© 2002 Addison-Wesley.
</FONT></TD><TD> </TD><TD valign="top"><A href="http://compositesw.com/devzone?ref=javaalmanac"><IMG alt="Click Here" height="600" width="120" border="0" src="/csw_oad_120x600_final.gif"></A></TD>
</TR>
</TABLE>
</BODY>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META CONTENT="NO-CACHE" HTTP-EQUIV="PRAGMA">
</HEAD>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -