关于JTable的单元格闪动的问题。 只是一个想法, 没有试过.得自己写一个 TableCellRender, 当数据改动时, 给数据加一个标志位, 然后根据数据的标志位来 flash , 可能需要线程或者 timer 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看符不符合你的要求, 剩下的自己应该可以搞定吧. :)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(); } }} 闪一下?你能保证客户能看到吗,在applet中用比较大数据量的JTable时候,再拖动过程中它自己就会闪,想要醒目,打个标记比较现实。 关于一个简单的算法,如何用Java实现 想问一下关于 java和c 之间有没有算法相同的md5加密现在出现一个问题! 窗体显示问题? 以~{~}开头结尾的乱码问题 topbit(无影雷霆)来拿分,第一份 试了很久,还是不会用 String.matches(String regx) 请问getSize().width是什么意思 java socket问题 请问哪里有较好的文件上传与下载的控件(可以在tomcat下运行) java的末日!!!!!!! 一个邮件问题(很初级) 这个 论坛里的高手都去哪了,这么简单的一个微软的问题具软没人懂
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();
}
}
}