📄 moverow.htm
字号:
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Moving a Row 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">
<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#Rows">Rows</A></B><font color="#666666" class="xsmall-font">
[8 examples]
</font>
</DIV><P>
<h3>e911. Moving a Row in a JTable Component</h3>
To move a row of data to a <code>JTable</code> component, you need to move it
in its table model. A simple implementation of a table model that
supports the moving of row data is <code>DefaultTableModel</code>.
<P> When moving one or more rows using
<code>DefaultTableModel.moveRow()</code>, the set of the rows to be moved and
the destination position must be specified. The contiguous set of rows
to be moved is specified with the index of the starting row and the
index of the end row. Row indices start from 0. For example, if
there are 2 rows in a table, the index of the first row is 0 and the
index of the second row is 1.
<P> The destination is also a position. Positions are locations between
rows. For example, if there are 2 rows in a table, there are 3
possible positions - - 0, 1,and 2. The important thing to remember about
the destination position is that it specifies the position in the row
data <font color="#0066ff"><i>after</i></font> the rows to be moved are taken out of the row
data. For example, if you want to move the first row to the end of the
table, the destination position is not <code>getRowCount()</code>, it is
<code>getRowCount()</code>-1. Similarly, if you want to move the first 2
lines to the end of the table, the destination position is
<code>getRowCount()</code>-2.
<P> The way in which the parameters are interpreted is somewhat
awkward. The more conventional method is to either make the end index
exclusive (like <code>String.substring()</code>) or replace end with a
length. Also, it is easier to specify the destination as it exists
before the operation, and not have to pretend that the rows to be
moved are taken out. A version of <code>moveRow()</code> with more
conventional parameter interpretation is provided in
<code>betterMoveRow()</code>.
<pre> DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
// Create some data
model.addColumn(<font color="#0066ff"><i>"Col1"</i></font>);
model.addRow(new Object[]{<font color="#0066ff"><i>"r1"</i></font>});
model.addRow(new Object[]{<font color="#0066ff"><i>"r2"</i></font>});
model.addRow(new Object[]{<font color="#0066ff"><i>"r3"</i></font>});
// Move the first row to the end of the table
model.moveRow(0, 0, model.getRowCount()-1);
betterMoveRow(model, 0, 1, model.getRowCount());
// Move the last row to the beginning of the table
model.moveRow(model.getRowCount()-1, model.getRowCount()-1, 0);
betterMoveRow(model, model.getRowCount()-1, model.getRowCount(), 0);
// Move the first two rows to the end of the table
model.moveRow(0, 1, model.getRowCount()-2);
betterMoveRow(model, 0, 2, model.getRowCount());
// Move the last two rows to the start of the table
model.moveRow(model.getRowCount()-2, model.getRowCount()-1, 0);
betterMoveRow(model, model.getRowCount()-2, model.getRowCount(), 0);
// A better version of moveRow().
// Moves all rows contained between the positions start and end
// to the position specified by dest.
public static void betterMoveRow(DefaultTableModel model, int start, int end, int dest) {
int count = end - start;
if (count <= 0) {
return;
}
if (dest > start) {
dest = Math.max(start, dest-count);
}
end--;
model.moveRow(start, end, dest);
}
</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>
e907. <a class="eglink" href="GetSize.html?l=rel">
Getting the Number of Rows and Columns in a JTable Component
</a>
<br>
e908. <a class="eglink" href="AppendRow.html?l=rel">
Appending a Row to a JTable Component
</a>
<br>
e909. <a class="eglink" href="InsertRow.html?l=rel">
Inserting a Row in a JTable Component
</a>
<br>
e910. <a class="eglink" href="RemoveRow.html?l=rel">
Removing a Row from a JTable Component
</a>
<br>
e912. <a class="eglink" href="CopyRow.html?l=rel">
Copying a Row or Column in a JTable Component
</a>
<br>
e913. <a class="eglink" href="RowHeight.html?l=rel">
Setting the Height of a Row in a JTable Component
</a>
<br>
e914. <a class="eglink" href="Stripe.html?l=rel">
Shading Rows and Columns 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#Columns">
Columns
</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#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 + -