只是一个想法, 没有试过.得自己写一个 TableCellRender, 当数据改动时, 给数据加一个
标志位, 然后根据数据的标志位来 flash , 可能需要线程或者 timer

解决方案 »

  1.   

    看符不符合你的要求, 剩下的自己应该可以搞定吧. :)import java.io.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.text.*;
    import javax.swing.table.*; 
    public class Test extends JFrame
    {    public Test(String s)
        {
    super(s);
    init();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(new Dimension(400, 300));
    setVisible(true);
        }    MyRenderer myRenderer;
        JTable table;
        JScrollPane scroller;
        javax.swing.Timer timer;    String[] header = {"C1", "C2", "C3"};
        String[][] data = 
        {
    {"0, 0", "1, 0", "2, 0"},
    {"0, 1", "1, 1", "2, 1"}
        };    private void init()
        {
    MyModel model = new MyModel(data, header);
    table = new JTable(model);
    myRenderer = new MyRenderer();
    table.setDefaultRenderer(String.class, myRenderer);
    scroller = new JScrollPane(table);
    getContentPane().add(scroller);
    timer = new javax.swing.Timer(500, getAction());
    timer.start();
        }    private Action getAction()
        {
    return new AbstractAction()
    {
        public void actionPerformed(ActionEvent e)
        {
    myRenderer.toggleFlashed();
    System.err.println("toggle");
    table.repaint();
        }
    };
        }    class MyModel extends DefaultTableModel
        {
    public MyModel(String[][] data, String[] header)
    {
        super(data, header);
    }

    public Class getColumnClass(int columnIndex)
    {
        return String.class;
    }
        }    class MyRenderer extends DefaultTableCellRenderer
        {
    private JLabel label = new JLabel();
    private boolean flashed; public MyRenderer()
    {
        label = new JLabel();
        label.setOpaque(true);
        label.setBackground(Color.blue);
        flashed = false;
    } public boolean isFlashed()
    {
        return flashed;
    } public void toggleFlashed()
    {
        flashed = !flashed;
    } public Component getTableCellRendererComponent(JTable table,  Object value, 
           boolean isSelected, boolean hasFocus, 
           int row, int column)
    {
        if (flashed && row == 1 && column == 1)
        {
    label.setText(value.toString());
    System.err.println("OKOK");
    return label;
        }
        else
        {
    return super.getTableCellRendererComponent(table, value, 
       isSelected, hasFocus, 
       row, column);
        }
    }
        }    public static void main(String[] args)
        {
    try
    {
        Test t = new Test("Test");
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
        }
    }
      

  2.   

    闪一下?你能保证客户能看到吗,在applet中用比较大数据量的JTable时候,再拖动过程中它自己就会闪,想要醒目,打个标记比较现实。