在JTable中加载进度条及进行操作

我们在多文件下载或多事务处理时,经常会出现使用线程以提高效率的情况,而这时在GUI程序中如何表示进度,就成了一个不大不小的问题。
现在比较被大众接受的方式,大体就是如迅雷等下载工具中一样,用表格中加载进度条以进行显示。
而对于Swing来说,并没有现成的组件能够实现这一操作,还有下载的并发,似乎也需要额外进行处理。于是,我在此提供一个基于jdk1.6版本的示例,以供参考。(因为jdk1.6提供了SwingWorker,简化了图形程序中的线程处理,使用其他jdk开发请替换此项即可)

本示例由两个java文件组成

MyTableModel.java
在JTable中加载进度条及进行操作packageorg.loon.test;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
importjava.awt.Component;
在JTable中加载进度条及进行操作
importjava.util.HashMap;
在JTable中加载进度条及进行操作
importjava.util.Map;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
importjavax.swing.BorderFactory;
在JTable中加载进度条及进行操作
importjavax.swing.JProgressBar;
在JTable中加载进度条及进行操作
importjavax.swing.JTable;
在JTable中加载进度条及进行操作
importjavax.swing.SwingWorker;
在JTable中加载进度条及进行操作
importjavax.swing.table.DefaultTableCellRenderer;
在JTable中加载进度条及进行操作
importjavax.swing.table.DefaultTableModel;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*<p>
在JTable中加载进度条及进行操作*Title:LoonFramework
在JTable中加载进度条及进行操作*</p>
在JTable中加载进度条及进行操作*<p>
在JTable中加载进度条及进行操作*Description:
在JTable中加载进度条及进行操作*</p>
在JTable中加载进度条及进行操作*<p>
在JTable中加载进度条及进行操作*Copyright:Copyright(c)2007
在JTable中加载进度条及进行操作*</p>
在JTable中加载进度条及进行操作*<p>
在JTable中加载进度条及进行操作*Company:LoonFramework
在JTable中加载进度条及进行操作*</p>
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作*
@authorchenpeng
在JTable中加载进度条及进行操作*@email:[email protected]
在JTable中加载进度条及进行操作*
@version0.1
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicclassMyTableModelextendsDefaultTableModel...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作
privatestaticfinallongserialVersionUID=1L;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
privatestaticfinalColumnContext[]columnArray=...{
在JTable中加载进度条及进行操作
newColumnContext("ID",Integer.class,false),
在JTable中加载进度条及进行操作
newColumnContext("名称",String.class,false),
在JTable中加载进度条及进行操作
newColumnContext("进度",Integer.class,false)}
;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
privatefinalMap<Integer,SwingWorker>swmap=newHashMap<Integer,SwingWorker>();
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
privateintnumber=0;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicvoidaddTest(Testt,SwingWorkerworker)...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作Object[]obj
=...{newInteger(number),t.getName(),t.getProgress()};
在JTable中加载进度条及进行操作
super.addRow(obj);
在JTable中加载进度条及进行操作swmap.put(number,worker);
在JTable中加载进度条及进行操作number
++;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicsynchronizedSwingWorkergetSwingWorker(intidentifier)...{
在JTable中加载进度条及进行操作Integerkey
=(Integer)getValueAt(identifier,0);
在JTable中加载进度条及进行操作
returnswmap.get(key);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicTestgetTest(intidentifier)...{
在JTable中加载进度条及进行操作
returnnewTest((String)getValueAt(identifier,1),
在JTable中加载进度条及进行操作(Integer)getValueAt(identifier,
2));
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicbooleanisCellEditable(introw,intcol)...{
在JTable中加载进度条及进行操作
returncolumnArray[col].isEditable;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicClass<?>getColumnClass(intmodelIndex)...{
在JTable中加载进度条及进行操作
returncolumnArray[modelIndex].columnClass;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicintgetColumnCount()...{
在JTable中加载进度条及进行操作
returncolumnArray.length;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicStringgetColumnName(intmodelIndex)...{
在JTable中加载进度条及进行操作
returncolumnArray[modelIndex].columnName;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
privatestaticclassColumnContext...{
在JTable中加载进度条及进行操作
publicfinalStringcolumnName;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
publicfinalClasscolumnClass;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
publicfinalbooleanisEditable;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
publicColumnContext(StringcolumnName,ClasscolumnClass,
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
booleanisEditable)...{
在JTable中加载进度条及进行操作
this.columnName=columnName;
在JTable中加载进度条及进行操作
this.columnClass=columnClass;
在JTable中加载进度条及进行操作
this.isEditable=isEditable;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
classTest...{
在JTable中加载进度条及进行操作
privateStringname;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
privateIntegerprogress;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicTest(Stringname,Integerprogress)...{
在JTable中加载进度条及进行操作
this.name=name;
在JTable中加载进度条及进行操作
this.progress=progress;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicvoidsetName(Stringstr)...{
在JTable中加载进度条及进行操作name
=str;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicvoidsetProgress(Integerstr)...{
在JTable中加载进度条及进行操作progress
=str;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicStringgetName()...{
在JTable中加载进度条及进行操作
returnname;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicIntegergetProgress()...{
在JTable中加载进度条及进行操作
returnprogress;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
classProgressRendererextendsDefaultTableCellRenderer...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作
privatestaticfinallongserialVersionUID=1L;
在JTable中加载进度条及进行操作
privatefinalJProgressBarb=newJProgressBar(0,100);
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicProgressRenderer()...{
在JTable中加载进度条及进行操作
super();
在JTable中加载进度条及进行操作setOpaque(
true);
在JTable中加载进度条及进行操作b.setBorder(BorderFactory.createEmptyBorder(
1,1,1,1));
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
booleanisSelected,booleanhasFocus,introw,intcolumn)...{
在JTable中加载进度条及进行操作Integeri
=(Integer)value;
在JTable中加载进度条及进行操作Stringtext
="完成";
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
if(i<0)...{
在JTable中加载进度条及进行操作
//删除
在JTable中加载进度条及进行操作
text="取消完毕";
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作}
elseif(i<100)...{
在JTable中加载进度条及进行操作b.setValue(i);
在JTable中加载进度条及进行操作
returnb;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
super.getTableCellRendererComponent(table,text,isSelected,hasFocus,
在JTable中加载进度条及进行操作row,column);
在JTable中加载进度条及进行操作
returnthis;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作

MyPanel.java
在JTable中加载进度条及进行操作packageorg.loon.test;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
importjava.awt.BorderLayout;
在JTable中加载进度条及进行操作
importjava.awt.Color;
在JTable中加载进度条及进行操作
importjava.awt.Component;
在JTable中加载进度条及进行操作
importjava.awt.Dimension;
在JTable中加载进度条及进行操作
importjava.awt.EventQueue;
在JTable中加载进度条及进行操作
importjava.awt.event.ActionEvent;
在JTable中加载进度条及进行操作
importjava.util.HashSet;
在JTable中加载进度条及进行操作
importjava.util.Random;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
importjavax.swing.AbstractAction;
在JTable中加载进度条及进行操作
importjavax.swing.Action;
在JTable中加载进度条及进行操作
importjavax.swing.Icon;
在JTable中加载进度条及进行操作
importjavax.swing.JButton;
在JTable中加载进度条及进行操作
importjavax.swing.JFrame;
在JTable中加载进度条及进行操作
importjavax.swing.JPanel;
在JTable中加载进度条及进行操作
importjavax.swing.JPopupMenu;
在JTable中加载进度条及进行操作
importjavax.swing.JScrollPane;
在JTable中加载进度条及进行操作
importjavax.swing.JSeparator;
在JTable中加载进度条及进行操作
importjavax.swing.JTable;
在JTable中加载进度条及进行操作
importjavax.swing.RowFilter;
在JTable中加载进度条及进行操作
importjavax.swing.SwingWorker;
在JTable中加载进度条及进行操作
importjavax.swing.WindowConstants;
在JTable中加载进度条及进行操作
importjavax.swing.table.TableCellRenderer;
在JTable中加载进度条及进行操作
importjavax.swing.table.TableColumn;
在JTable中加载进度条及进行操作
importjavax.swing.table.TableRowSorter;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
//importorg.loon.framework.dll.NativeLoader;
在JTable中加载进度条及进行操作

在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*<p>
在JTable中加载进度条及进行操作*Title:LoonFramework
在JTable中加载进度条及进行操作*</p>
在JTable中加载进度条及进行操作*<p>
在JTable中加载进度条及进行操作*Description:
在JTable中加载进度条及进行操作*</p>
在JTable中加载进度条及进行操作*<p>
在JTable中加载进度条及进行操作*Copyright:Copyright(c)2007
在JTable中加载进度条及进行操作*</p>
在JTable中加载进度条及进行操作*<p>
在JTable中加载进度条及进行操作*Company:LoonFramework
在JTable中加载进度条及进行操作*</p>
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作*
@authorchenpeng
在JTable中加载进度条及进行操作*@email:[email protected]
在JTable中加载进度条及进行操作*
@version0.1
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicclassMyPanelextendsJPanel...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作
privatestaticfinallongserialVersionUID=1L;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
privatestaticfinalColorevenColor=newColor(250,250,250);
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
privatefinalMyTableModelmodel=newMyTableModel();
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
privatefinalTableRowSorter<MyTableModel>sorter=newTableRowSorter<MyTableModel>(
在JTable中加载进度条及进行操作model);
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
privatefinalJTabletable;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicMyPanel()...{
在JTable中加载进度条及进行操作
super(newBorderLayout());
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作table
=newJTable(model)...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作
privatestaticfinallongserialVersionUID=1L;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
publicComponentprepareRenderer(
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作TableCellRenderertableCellRenderer,
introw,intcolumn)...{
在JTable中加载进度条及进行操作Componentcomponent
=super.prepareRenderer(tableCellRenderer,row,
在JTable中加载进度条及进行操作column);
在JTable中加载进度条及进行操作
//背景色及字体设置
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
if(isRowSelected(row))...{
在JTable中加载进度条及进行操作component.setForeground(getSelectionForeground());
在JTable中加载进度条及进行操作component.setBackground(getSelectionBackground());
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作}
else...{
在JTable中加载进度条及进行操作component.setForeground(getForeground());
在JTable中加载进度条及进行操作component.setBackground((row
%2==0)?evenColor:table
在JTable中加载进度条及进行操作.getBackground());
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
returncomponent;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicJPopupMenugetComponentPopupMenu()...{
在JTable中加载进度条及进行操作
returnmakePopup();
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}
;
在JTable中加载进度条及进行操作table.setRowSorter(sorter);
在JTable中加载进度条及进行操作model.addTest(
newTest("进度条测试",100),null);
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
//滚动条
在JTable中加载进度条及进行操作
JScrollPanescrollPane=newJScrollPane(table);
在JTable中加载进度条及进行操作
//背景色
在JTable中加载进度条及进行操作
scrollPane.getViewport().setBackground(Color.black);
在JTable中加载进度条及进行操作
//弹出菜单
在JTable中加载进度条及进行操作
table.setComponentPopupMenu(newJPopupMenu());
在JTable中加载进度条及进行操作
//是否始终大到足以填充封闭视口的高度
在JTable中加载进度条及进行操作
table.setFillsViewportHeight(true);
在JTable中加载进度条及进行操作
//将单元格间距的高度和宽度设置为指定的Dimension
在JTable中加载进度条及进行操作
table.setIntercellSpacing(newDimension());
在JTable中加载进度条及进行操作
//是否绘制单元格间的水平线
在JTable中加载进度条及进行操作
table.setShowHorizontalLines(true);
在JTable中加载进度条及进行操作
//是否绘制单元格间的垂直线
在JTable中加载进度条及进行操作
table.setShowVerticalLines(false);
在JTable中加载进度条及进行操作
//停止编辑时重新定义焦点,避免TableCellEditor丢失数据
在JTable中加载进度条及进行操作
table.putClientProperty("terminateEditOnFocusLost",Boolean.TRUE);
在JTable中加载进度条及进行操作
//表示JTable中列的所有属性,如宽度、大小可调整性、最小和最大宽度等。
在JTable中加载进度条及进行操作
TableColumncolumn=table.getColumnModel().getColumn(0);
在JTable中加载进度条及进行操作column.setMaxWidth(
60);
在JTable中加载进度条及进行操作column.setMinWidth(
60);
在JTable中加载进度条及进行操作column.setResizable(
false);
在JTable中加载进度条及进行操作column
=table.getColumnModel().getColumn(2);
在JTable中加载进度条及进行操作
//绘制此列各值的TableCellRenderer
在JTable中加载进度条及进行操作
column.setCellRenderer(newProgressRenderer());
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
//添加按钮
在JTable中加载进度条及进行操作
add(newJButton(newCreateNewAction("添加",null)),BorderLayout.SOUTH);
在JTable中加载进度条及进行操作add(scrollPane,BorderLayout.CENTER);
在JTable中加载进度条及进行操作setPreferredSize(
newDimension(320,180));
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
classCreateNewActionextendsAbstractAction...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作
privatestaticfinallongserialVersionUID=1L;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicCreateNewAction(Stringlabel,Iconicon)...{
在JTable中加载进度条及进行操作
super(label,icon);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicvoidactionPerformed(ActionEventevt)...{
在JTable中加载进度条及进行操作createNewActionPerformed(evt);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*创建事件
在JTable中加载进度条及进行操作*
@paramevt
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
privatevoidcreateNewActionPerformed(ActionEventevt)...{
在JTable中加载进度条及进行操作
finalintkey=model.getRowCount();
在JTable中加载进度条及进行操作
//在jdk1.6后,当一个Swing程序需要执行一个多线程任务时,可以通过javax.swing.SwingWorker实例进行实现。
在JTable中加载进度条及进行操作
//SwingWorker的process可以定义约束属性。更改这些属性将触发事件,并从事件调度线程上引起事件处理方法的调用。
在JTable中加载进度条及进行操作
//SwingWorker的done方法,在后台任务完成时自动的在事件调度线程上被调用。
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
SwingWorker<Integer,Integer>worker=newSwingWorker<Integer,Integer>()...{
在JTable中加载进度条及进行操作
//随机sleep
在JTable中加载进度条及进行操作
privateintsleepDummy=newRandom().nextInt(100)+1;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
//最大任务数量
在JTable中加载进度条及进行操作
privateinttaskSize=200;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
protectedIntegerdoInBackground()...{
在JTable中加载进度条及进行操作
intcurrent=0;
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
while(current<taskSize&&!isCancelled())...{
在JTable中加载进度条及进行操作current
++;
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
try...{
在JTable中加载进度条及进行操作Thread.sleep(sleepDummy);
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作}
catch(InterruptedExceptionie)...{
在JTable中加载进度条及进行操作publish(
-1);
在JTable中加载进度条及进行操作
break;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作publish(
100*current/taskSize);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
returnsleepDummy*taskSize;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*进行中处理
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
protectedvoidprocess(java.util.List<Integer>data)...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
for(Integervalue:data)...{
在JTable中加载进度条及进行操作
//把数据填入对应的行列
在JTable中加载进度条及进行操作
model.setValueAt(value,key,2);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
//传送变更事件给指定行列
在JTable中加载进度条及进行操作
model.fireTableCellUpdated(key,2);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*完成后处理
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
protectedvoiddone()...{
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}
;
在JTable中加载进度条及进行操作model.addTest(
newTest("进度条测试",0),worker);
在JTable中加载进度条及进行操作worker.execute();
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
classCancelActionextendsAbstractAction...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作
privatestaticfinallongserialVersionUID=1L;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicCancelAction(Stringlabel,Iconicon)...{
在JTable中加载进度条及进行操作
super(label,icon);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicvoidactionPerformed(ActionEventevt)...{
在JTable中加载进度条及进行操作cancelActionPerformed(evt);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*取消进度
在JTable中加载进度条及进行操作*
@paramevt
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicsynchronizedvoidcancelActionPerformed(ActionEventevt)...{
在JTable中加载进度条及进行操作
int[]selection=table.getSelectedRows();
在JTable中加载进度条及进行操作
if(selection==null||selection.length<=0)
在JTable中加载进度条及进行操作
return;
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
for(inti=0;i<selection.length;i++)...{
在JTable中加载进度条及进行操作
intmidx=table.convertRowIndexToModel(selection[i]);
在JTable中加载进度条及进行操作SwingWorkerworker
=model.getSwingWorker(midx);
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
if(worker!=null&&!worker.isDone())...{
在JTable中加载进度条及进行操作worker.cancel(
true);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作worker
=null;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作table.repaint();
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*取消下载进程
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作*
@authorchenpeng
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
classDeleteActionextendsAbstractAction...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
/***//**
在JTable中加载进度条及进行操作*
在JTable中加载进度条及进行操作
*/

在JTable中加载进度条及进行操作
privatestaticfinallongserialVersionUID=1L;
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicDeleteAction(Stringlabel,Iconicon)...{
在JTable中加载进度条及进行操作
super(label,icon);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicvoidactionPerformed(ActionEventevt)...{
在JTable中加载进度条及进行操作deleteActionPerformed(evt);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
privatefinalHashSet<Integer>set=newHashSet<Integer>();
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicsynchronizedvoiddeleteActionPerformed(ActionEventevt)...{
在JTable中加载进度条及进行操作
int[]selection=table.getSelectedRows();
在JTable中加载进度条及进行操作
if(selection==null||selection.length<=0)
在JTable中加载进度条及进行操作
return;
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
for(inti=0;i<selection.length;i++)...{
在JTable中加载进度条及进行操作
intmidx=table.convertRowIndexToModel(selection[i]);
在JTable中加载进度条及进行操作set.add(midx);
在JTable中加载进度条及进行操作SwingWorkerworker
=model.getSwingWorker(midx);
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
if(worker!=null&&!worker.isDone())...{
在JTable中加载进度条及进行操作worker.cancel(
true);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作worker
=null;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
//JTable过滤器
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
finalRowFilter<MyTableModel,Integer>filter=newRowFilter<MyTableModel,Integer>()...{
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作
publicbooleaninclude(
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作Entry
<?extendsMyTableModel,?extendsInteger>entry)...{
在JTable中加载进度条及进行操作Integermidx
=entry.getIdentifier();
在JTable中加载进度条及进行操作
return!set.contains(midx);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}
;
在JTable中加载进度条及进行操作sorter.setRowFilter(filter);
在JTable中加载进度条及进行操作table.repaint();
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
privateJPopupMenumakePopup()...{
在JTable中加载进度条及进行操作JPopupMenupop
=newJPopupMenu();
在JTable中加载进度条及进行操作Actionact
=newCreateNewAction("添加",null);
在JTable中加载进度条及进行操作pop.add(act);
在JTable中加载进度条及进行操作act
=newCancelAction("取消",null);
在JTable中加载进度条及进行操作
int[]selection=table.getSelectedRows();
在JTable中加载进度条及进行操作
if(selection==null||selection.length<=0)
在JTable中加载进度条及进行操作act.setEnabled(
false);
在JTable中加载进度条及进行操作pop.add(act);
在JTable中加载进度条及进行操作
//分割线
在JTable中加载进度条及进行操作
pop.add(newJSeparator());
在JTable中加载进度条及进行操作act
=newDeleteAction("删除",null);
在JTable中加载进度条及进行操作
if(selection==null||selection.length<=0)
在JTable中加载进度条及进行操作act.setEnabled(
false);
在JTable中加载进度条及进行操作pop.add(act);
在JTable中加载进度条及进行操作
returnpop;
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicstaticvoidmain(String[]args)...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作EventQueue.invokeLater(
newRunnable()...{
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicvoidrun()...{
在JTable中加载进度条及进行操作createGUI();
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}
);
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作在JTable中加载进度条及进行操作
publicstaticvoidcreateGUI()...{
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作JFrameframe
=newJFrame("在JTable中加载进度条及进行操作");
在JTable中加载进度条及进行操作frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
在JTable中加载进度条及进行操作frame.getContentPane().add(
newMyPanel());
在JTable中加载进度条及进行操作frame.setSize(
400,400);
在JTable中加载进度条及进行操作
//透明度90%
在JTable中加载进度条及进行操作
//NativeLoader.getInstance().setTransparence(frame,0.9f);
在JTable中加载进度条及进行操作
//居中
在JTable中加载进度条及进行操作
frame.setLocationRelativeTo(null);
在JTable中加载进度条及进行操作frame.setVisible(
true);
在JTable中加载进度条及进行操作
在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作}

在JTable中加载进度条及进行操作

运行效果如下:
在JTable中加载进度条及进行操作