知识大全 Swing之JTable运用线程一个测试
Posted 知
篇首语:愚昧从来没有给人带来幸福;幸福的根源在于知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Swing之JTable运用线程一个测试相关的知识,希望对你有一定的参考价值。
Swing之JTable运用线程一个测试 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
import javax swing *;import javax swing table DefaultTableModel;import sun java swing plaf windows WindowsClassicLookAndFeel;import java awt *;import java util Vector;/** * 测试JTable添加数据 删除数据频繁操作 JTable出现数组越界的处理 * 在工作中如果遇到频繁的操作Jtable的数据 特别是速率很快的情况下 经常会遇到 * Exception in thread AWT EventQueue java lang ArrayIndexOutOfBoundsException * 这样的数组越界的异常 这里引入Swing的一个线程 能很好的解决这个问题 * 供同样遇到这样问题的人参考 * @author 蒋家狂潮 * email: * */public class ThreadTable extends JTable private DefaultTableModel model;
static String[] header = new String[] id name sex age ;
public ThreadTable() model = new DefaultTableModel(header ); this setModel(model);
public void deleteRows(int rowCount) throws Exception if (rowCount >= model getColumnCount()) throw new Exception( 删除的行数不能超过model的总行数! ); else for (int i = rowCount ; i >= ; i ) model removeRow(i);
public void testInsertValue() final Vector<String> value = new Vector<String>(); value add( ); value add( simon ); value add( boy ); value add( );
Thread thread = new Thread() public void run() for (int i = ; i < ; i++) //addValueWithThread(value);//这个方法不会出现越界 addValueWithoutThread(value);//这个方法会出现越界 差别就在于加入一个线程 try sleep( ); catch (InterruptedException e) // TODO Auto generated catch block e printStackTrace(); ; thread start(); /** * 将添加记录和删除记录在一个线程里走 不会出现页面刷新的时候 数组越界的问题 * @param value */ public void addValueWithThread(final Vector value) Thread thread = new Thread() public void run() Runnable runnable = new Runnable() public void run() model addRow(value); if (model getRowCount() > ) try deleteRows( ); catch (Exception e) // TODO Auto generated catch block e printStackTrace(); ; SwingUtilities invokeLater(runnable); ; thread start(); /** * 这样一边添加记录 一边删除记录 会出现数组越界的情况 * @param value */ public void addValueWithoutThread(final Vector value) model addRow(value); if (model getRowCount() > ) try deleteRows( ); catch (Exception e) // TODO Auto generated catch block e printStackTrace(); public static void main(String[] args) try UIManager setLookAndFeel(new WindowsClassicLookAndFeel()); catch (UnsupportedLookAndFeelException e) // TODO Auto generated catch block e printStackTrace();
JFrame f = new JFrame(); f getContentPane() setLayout(new BorderLayout());
ThreadTable table = new ThreadTable(); JScrollPane scroll = new JScrollPane(table); f getContentPane() add(scroll BorderLayout CENTER);
f setSize( ); f setLocation( ); f setVisible(true);
cha138/Article/program/Java/hx/201311/26420相关参考