我最近要做一个任务:
每秒刷新每行内容而且每行要根剧标志(flag)而变化颜色,每一个行都有不定的flag。
flag=1红flag=2黄flag=3浅蓝.谁做对,喊他牛人,it精英,SWING王子。高分求解。3天之内没有人回答出,以后再回答出,也不给分。
我的代码:
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;import java.util.*;
import java.awt.*;
public class SwingTableTest3 extends JApplet implements Runnable
{
AbstractTableModel tm;
//声明一个类AbstractTableModel对象
JTable jg_table;//声明一个类JTable对象
Vector vect;//声明一个向量对象
JScrollPane jsp;//声明一个滚动杠对象
String title[]={"JTABLE","无情",
"夕阳","岁月","人生"};
static int i=0; public void init()
{
vect=new Vector();//实例化向量
tm=new AbstractTableModel()
{
public int getColumnCount(){
return title.length;}//取得表格列数
public int getRowCount(){
return vect.size();}//取得表格行数
public Object getValueAt(int row,int column)
{
if(!vect.isEmpty())
return
((Vector)vect.elementAt(row)).elementAt(column);
else
return null;}//取得单元格中的属性值
public String getColumnName(int column)
{
return title[column];
}//设置表格列名
public void setValueAt(Object value,int row,int column)
{
}
//数据模型不可编辑,该方法设置为空
public Class getColumnClass(int c)
{
return getValueAt(0,c).getClass();
}//取得列所属对象类
public boolean isCellEditable(int row,int column){
return false;}//设置单元格不可编辑,为缺省实现
};
jg_table=new JTable(tm);//生成自己的数据模型
jg_table.setToolTipText("显示全部查询结果");
//设置帮助提示
jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//设置表格调整尺寸模式
jg_table.setCellSelectionEnabled(false);
//设置单元格选择方式
jg_table.setShowVerticalLines(true);
//设置是否显示单元格间的分割线
jg_table.setShowHorizontalLines(true);
jsp=new JScrollPane(jg_table);//给表格加上滚动杠
this.getContentPane().add(jsp);
resize(800,600);
Thread t=new Thread(this);
t.start();
}
public void run()
{
while(true)
{
try
{
vect.removeAllElements();
tm.fireTableStructureChanged();
Vector vtemp=new Vector();
//颜色标志 1:表示红 2:表示黄 3:表示浅绿
int []flag=new int[100];
for(int z=0;z<=99;z++)
{
flag[z]=(int)(Math.random()*3)+1;
}
for(int m=0;m<100;m++)
{
jg_table.setDefaultRenderer(Object.class,new EvenOddRendererY(m,flag[m]));
vtemp.addElement("AAAA"+new Integer(i).toString());
vtemp.addElement("BBBB"+new Integer(i).toString());
vtemp.addElement("CCCC"+new Integer(i).toString());
vtemp.addElement("DDDD"+new Integer(i).toString());
vtemp.addElement("EEEE"+new Integer(i).toString());
vect.addElement(vtemp);
}
tm.fireTableStructureChanged();
System.out.println("GOOD");
Thread.sleep(2000);
i++;
}catch(Exception e){}
}
}
}
class EvenOddRendererY implements TableCellRenderer
{
Color background;
int x;
int flag;
public EvenOddRendererY(int x,int flag)
{
this.x=x;
this.flag=flag;
}
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer(); public synchronized Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
((JLabel) renderer).setOpaque(true);
if(row==x)
background=setColor(flag);
renderer.setBackground(background);
return renderer;
}
public Color setColor(int flag)
{
switch(flag)
{
case 1:return Color.red;
case 2:return Color.yellow;
case 3:return Color.cyan;
default:return Color.gray;
}
}
}
每秒刷新每行内容而且每行要根剧标志(flag)而变化颜色,每一个行都有不定的flag。
flag=1红flag=2黄flag=3浅蓝.谁做对,喊他牛人,it精英,SWING王子。高分求解。3天之内没有人回答出,以后再回答出,也不给分。
我的代码:
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;import java.util.*;
import java.awt.*;
public class SwingTableTest3 extends JApplet implements Runnable
{
AbstractTableModel tm;
//声明一个类AbstractTableModel对象
JTable jg_table;//声明一个类JTable对象
Vector vect;//声明一个向量对象
JScrollPane jsp;//声明一个滚动杠对象
String title[]={"JTABLE","无情",
"夕阳","岁月","人生"};
static int i=0; public void init()
{
vect=new Vector();//实例化向量
tm=new AbstractTableModel()
{
public int getColumnCount(){
return title.length;}//取得表格列数
public int getRowCount(){
return vect.size();}//取得表格行数
public Object getValueAt(int row,int column)
{
if(!vect.isEmpty())
return
((Vector)vect.elementAt(row)).elementAt(column);
else
return null;}//取得单元格中的属性值
public String getColumnName(int column)
{
return title[column];
}//设置表格列名
public void setValueAt(Object value,int row,int column)
{
}
//数据模型不可编辑,该方法设置为空
public Class getColumnClass(int c)
{
return getValueAt(0,c).getClass();
}//取得列所属对象类
public boolean isCellEditable(int row,int column){
return false;}//设置单元格不可编辑,为缺省实现
};
jg_table=new JTable(tm);//生成自己的数据模型
jg_table.setToolTipText("显示全部查询结果");
//设置帮助提示
jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//设置表格调整尺寸模式
jg_table.setCellSelectionEnabled(false);
//设置单元格选择方式
jg_table.setShowVerticalLines(true);
//设置是否显示单元格间的分割线
jg_table.setShowHorizontalLines(true);
jsp=new JScrollPane(jg_table);//给表格加上滚动杠
this.getContentPane().add(jsp);
resize(800,600);
Thread t=new Thread(this);
t.start();
}
public void run()
{
while(true)
{
try
{
vect.removeAllElements();
tm.fireTableStructureChanged();
Vector vtemp=new Vector();
//颜色标志 1:表示红 2:表示黄 3:表示浅绿
int []flag=new int[100];
for(int z=0;z<=99;z++)
{
flag[z]=(int)(Math.random()*3)+1;
}
for(int m=0;m<100;m++)
{
jg_table.setDefaultRenderer(Object.class,new EvenOddRendererY(m,flag[m]));
vtemp.addElement("AAAA"+new Integer(i).toString());
vtemp.addElement("BBBB"+new Integer(i).toString());
vtemp.addElement("CCCC"+new Integer(i).toString());
vtemp.addElement("DDDD"+new Integer(i).toString());
vtemp.addElement("EEEE"+new Integer(i).toString());
vect.addElement(vtemp);
}
tm.fireTableStructureChanged();
System.out.println("GOOD");
Thread.sleep(2000);
i++;
}catch(Exception e){}
}
}
}
class EvenOddRendererY implements TableCellRenderer
{
Color background;
int x;
int flag;
public EvenOddRendererY(int x,int flag)
{
this.x=x;
this.flag=flag;
}
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer(); public synchronized Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
((JLabel) renderer).setOpaque(true);
if(row==x)
background=setColor(flag);
renderer.setBackground(background);
return renderer;
}
public Color setColor(int flag)
{
switch(flag)
{
case 1:return Color.red;
case 2:return Color.yellow;
case 3:return Color.cyan;
default:return Color.gray;
}
}
}
import javax.swing.table.*;import java.util.*;
import java.awt.*;public class SwingTableTest3 extends JFrame implements Runnable
{
AbstractTableModel tm; //声明一个类AbstractTableModel对象
JTable jg_table;//声明一个类JTable对象 Vector vect;//声明一个向量对象 JScrollPane jsp;//声明一个滚动杠对象 String title[] =
{
"JTABLE", "无情", "夕阳", "岁月", "人生"
}; static int i = 0; public void init()
{
vect = new Vector();//实例化向量
tm = new AbstractTableModel()
{
public int getColumnCount()
{
return title.length;
}//取得表格列数 public int getRowCount()
{
return vect.size();
}//取得表格行数 public Object getValueAt(int row, int column)
{
if (!vect.isEmpty())
return ((Vector) vect.elementAt(row)).elementAt(column);
else
return null;
}//取得单元格中的属性值 public String getColumnName(int column)
{
return title[column];
}//设置表格列名 public void setValueAt(Object value, int row, int column)
{ } //数据模型不可编辑,该方法设置为空
public Class getColumnClass(int c)
{
return getValueAt(0, c).getClass();
}//取得列所属对象类 public boolean isCellEditable(int row, int column)
{
return false;
}//设置单元格不可编辑,为缺省实现
};
jg_table = new JTable(tm);//生成自己的数据模型
jg_table.setToolTipText("显示全部查询结果");
//设置帮助提示
jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//设置表格调整尺寸模式
jg_table.setCellSelectionEnabled(false);
//设置单元格选择方式
jg_table.setShowVerticalLines(true);
//设置是否显示单元格间的分割线
jg_table.setShowHorizontalLines(true);
jsp = new JScrollPane(jg_table);//给表格加上滚动杠
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(jsp, BorderLayout.CENTER);
resize(800, 600);
Thread t = new Thread(this);
t.start();
} int count = 0;
public void run()
{
while(true)
{
count ++;
try
{
vect.removeAllElements();
// tm.fireTableStructureChanged();
Vector vtemp = new Vector();
//颜色标志 1:表示红 2:表示黄 3:表示浅绿
int[] flag = new int[10];
for (int z = 0; z <= 9; z++)
{
flag[z] = (int) (Math.random() * 3) + 1;
// System.out.println("flag:" + flag[z]);
}
jg_table.setDefaultRenderer(Object.class, new EvenOddRendererY(flag));
for (int m = 0; m < 10; m++)
{
vtemp.addElement("AAAA" + new Integer(i).toString());
vtemp.addElement("BBBB" + new Integer(i).toString());
vtemp.addElement("CCCC" + new Integer(i).toString());
vtemp.addElement("DDDD" + new Integer(i).toString());
vtemp.addElement("EEEE" + new Integer(i).toString());
vect.addElement(vtemp);
}
tm.fireTableDataChanged();
// tm.fireTableStructureChanged();
System.out.println("GOOD");
Thread.sleep(2000);
i++;
}
catch(Exception e)
{
}
} }
public static void main(String[] args)
{
SwingTableTest3 frame = new SwingTableTest3();
frame.init();
frame.setVisible(true);
}
}class EvenOddRendererY implements TableCellRenderer
{
Color background; int[] flag; public EvenOddRendererY(int[] flag)
{
this.flag = flag;
} public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer(); public synchronized Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
((JLabel) renderer).setOpaque(true);
// if (row == x)
background = getColor(flag[row]);
System.out.println("flag:" + flag);
renderer.setBackground(background);
return renderer;
} public Color getColor(int flag)
{
switch(flag)
{
case 1:
return Color.red;
case 2:
return Color.yellow;
case 3:
return Color.cyan;
default:
return Color.gray;
}
}
}
请我吃饭就不必了,是我自己无聊喔