日期:2014-05-20  浏览次数:20658 次

请问怎么对JTable的某个单元格添加一个监视器!
我建JTable用的代码

Object a1[][];
Object name1[] = {"进程名", "到达时间", "服务时间"};
table_total = new JTable(a1, name1);
add(new JScrollPane(table_total), BorderLayout.CENTER);

别的代码,估计对各位大神也是没用,我就不贴出来了,然后再来一张图。


顺便问问getValueAt(int, int)这个方法,怎么用?API文档里面就写了public Object getValueAt(int row,int column)这个和没用的几句话,我想知道它返回的是什么东西?是Object类型的一个对象吗?如果是,是不是这样Integer.parseInt( a1.getVakueAt(x,y).toString() )就可以得到一个整型的值呢?
然后加validate(),就可以刷新一下界面,就行了?

------解决方案--------------------


import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingUtilities;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;


/**
 *
 * @date   23/11/2012
 */
public class ThreadTimeDemo extends JPanel {
  
  public static void main(String[] args) {
    
    SwingUtilities.invokeLater(new Runnable() {

      @Override
      public void run() {
        
        JFrame f = new JFrame("Test");
        
        f.getContentPane().add(new ThreadTimeDemo(), BorderLayout.CENTER);
        
        f.pack();
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
      }
    });
  }
  
  private JSpinner spinnerThreadCount;
  private JTextField totalTime;
  private ThreadTimeTableModel model;
  private JTable table;
  private Action actionStart;
  
  private final ExecutorService executor = Executors.newCachedThreadPool();
  
  ThreadTimeDemo() {
    
    spinnerThreadCount = new JSpinner(new SpinnerNumberModel(20, 1, 20, 1));