javaJtable经典列设置+表格颜色.docx

上传人:b****4 文档编号:4201550 上传时间:2022-11-28 格式:DOCX 页数:10 大小:45.47KB
下载 相关 举报
javaJtable经典列设置+表格颜色.docx_第1页
第1页 / 共10页
javaJtable经典列设置+表格颜色.docx_第2页
第2页 / 共10页
javaJtable经典列设置+表格颜色.docx_第3页
第3页 / 共10页
javaJtable经典列设置+表格颜色.docx_第4页
第4页 / 共10页
javaJtable经典列设置+表格颜色.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

javaJtable经典列设置+表格颜色.docx

《javaJtable经典列设置+表格颜色.docx》由会员分享,可在线阅读,更多相关《javaJtable经典列设置+表格颜色.docx(10页珍藏版)》请在冰豆网上搜索。

javaJtable经典列设置+表格颜色.docx

javaJtable经典列设置+表格颜色

作者:

泪089

大家大多数看到的设置Jtable的行颜色是,仅仅值是一个列子,完全没有在实际的Gui用应用,好多的列子特简单。

而本人做的则是在实际的应用中完成的,

说明:

在邮件程序中判断某列的数据来设置某行的颜色,

一下程序中,我们可以根据发送的完成百分比来索引到改列数值所在的行,具体我们看下面

importjava.awt.BorderLayout;

importjava.awt.Color;

importjava.awt.Dimension;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Vector;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

importjavax.swing.JScrollPane;

importjavax.swing.JTable;

importjavax.swing.SwingConstants;

importjavax.swing.table.DefaultTableCellRenderer;

importjavax.swing.table.DefaultTableModel;

importcom.s361.server.mail.util.RowColorRenderer_Running;

1,创建第一个类GUI用于显示

publicclassGUIextendsJFrame{

privatestaticJFrameframe=null;

privatestaticJPanelpanel=null;

staticJTabletable=null;

staticDefaultTableModeltabledtm=newDefaultTableModel();

/*

*intcomplete=0;staticintrow=0;

*/

staticJScrollPanescrollPane=null;

//定义table中的内容不可编辑,DefaultTableModel是Jtable的一个方法

publicbooleanisCellEditable(){

returnfalse;

}

//GUi的方法

publicGUI(){

frame=newJFrame();

frame.setBounds(200,200,500,500);

panel=newJPanel();

panel.setBackground(Color.white);

String[]temp=newString[5];

Vectortitle=newVector();

title.add("文件名");

title.add("发件人");

title.add("收件人");

title.add("收件时间");

title.add("完成百分比");

title.add("每秒接收");

//在表格中添加标题

tabledtm=newDefaultTableModel(null,title);

//用来设定dtm中表格数据不可修改(查看isCellEditable)

table=newJTable(tabledtm){

publicbooleanisCellEditable(introw,intcolumn){

returnfalse;

}

};

table.setModel(tabledtm);

JScrollPanescrollPane=newJScrollPane(table);//在滚动框中加入table

scrollPane.setPreferredSize(newDimension(400,300));//大小设置

DefaultTableCellRenderersend=newDefaultTableCellRenderer();

send.setHorizontalAlignment(SwingConstants.CENTER);

//设置每行的高度为25

table.setRowHeight(25);

//设置相邻两行单元格的距离

table.setRowMargin(0);

//可选择行

table.setRowSelectionAllowed(true);

//选择行背景色

table.setSelectionBackground(newColor(189,252,201));//薄荷绿

///选择行前景色

table.setGridColor(newColor(200,200,200));

//是否显示这个网格

table.setShowGrid(true);

//是否显示水平网格

table.setShowHorizontalLines(true);

//是否显示垂直网格

table.setShowVerticalLines(true);

//表格背景色

table.setBackground(Color.yellow);

DefaultTableCellRenderertcr=newDefaultTableCellRenderer();

tcr.setHorizontalAlignment(SwingConstants.CENTER);

table.getColumn("文件名").setCellRenderer(tcr);

table.getColumn("发件人").setCellRenderer(tcr);

table.getColumn("收件人").setCellRenderer(tcr);

table.getColumn("收件时间").setCellRenderer(tcr);

table.getColumn("完成百分比").setCellRenderer(tcr);

table.getColumn("每秒接收").setCellRenderer(tcr);

panel.add(scrollPane,BorderLayout.CENTER);

frame.add(panel);

frame.setVisible(true);

frame.setResizable(true);

}

//*********写个数据传入表格的方法这个比较重要,以为涉及到数据在表格中的显示*******************************

publicstaticvoidshowTableInfo(Listtable_info){

//正在运行行索引列表,

ListrunningRowIndexes=newArrayList();

for(inti=0;i

//保存正在运行的行索引,到runningRowIndexes,加个判断:

判断i,完成百分比不等于0,索引到这行,添加到

//runningRowIndexes中

if(!

table_info.get(i).getFinishPercent().equals("0")){

runningRowIndexes.add(i);

}

}

//在测试类中设置list的值,将值穿进去

for(inti=0;i

String[]sendDate={

table_info.get(i).getFileName(),//文件名

table_info.get(i).getSender(),//发件人

table_info.get(i).getReceiver(),//收件人

table_info.get(i).getFileSize(),

table_info.get(i).getFinishPercent(),//完成百分比

table_info.get(i).getSendSpeed()};//速度

//完成插入在表格后

tabledtm.insertRow(tabledtm.getRowCount(),sendDate);

//表格插入数据,将date的数据传入row中

tabledtm.getRowCount();

}

//渲染正在运行的行颜色

//重要的是以下的代码。

for(inti=0;i

table

.getColumnModel()

.getColumn(i)

.setCellRenderer(newRowColorRenderer_Running(//创建一个RowColorRenderer_Running的类

runningRowIndexes,tabledtm

));

}

}

}

第二个类,就是getset的方法,将传值的类型等写好

publicclassTableInfo{

privateStringsender;//发件人

privateStringreceiver;//收件人

privateStringsendTime;//发送时间

privateStringfileSize;//文件大小,int范围0-21亿如果大文件的话就可能不行,所以采用long

privateStringfinishPercent;//完成百分比

privateStringsendSpeed;//发送速度

privateStringfileName;

publicStringgetSender(){

returnsender;

}

publicvoidsetSender(Stringsender){

this.sender=sender;

}

publicStringgetReceiver(){

returnreceiver;

}

publicvoidsetReceiver(Stringreceiver){

this.receiver=receiver;

}

publicStringgetSendTime(){

returnsendTime;

}

publicvoidsetSendTime(StringsendTime){

this.sendTime=sendTime;

}

publicStringgetFileSize(){

returnfileSize;

}

publicvoidsetFileSize(StringfileSize){

this.fileSize=fileSize;

}

publicStringgetFinishPercent(){

returnfinishPercent;

}

publicvoidsetFinishPercent(StringfinishPercent){

this.finishPercent=finishPercent;

}

publicStringgetSendSpeed(){

returnsendSpeed;

}

publicvoidsetSendSpeed(StringsendSpeed){

this.sendSpeed=sendSpeed;

}

publicStringgetFileName(){

returnfileName;

}

publicvoidsetFileName(StringfileName){

this.fileName=fileName;

}

publicTableInfo(Stringsender,Stringreceiver,StringsendTime,

StringfileSize,StringfinishPercent,StringsendSpeed,

StringfileName){

super();

this.sender=sender;

this.receiver=receiver;

this.sendTime=sendTime;

this.fileSize=fileSize;

this.finishPercent=finishPercent;

this.sendSpeed=sendSpeed;

this.fileName=fileName;

}

}

第三个类:

RowColorRenderer_Running

importjava.awt.Color;

importjava.awt.Component;

importjava.util.List;

importjavax.swing.JTable;

importjavax.swing.table.DefaultTableCellRenderer;

importjavax.swing.table.DefaultTableModel;

//类继承DefaultTableCellRenderer渲染器的方法哦

publicclassRowColorRenderer_RunningextendsDefaultTableCellRenderer{

privateListrunningRowIndexes;

privateDefaultTableModeldtm;

//一个有参的构造函数

publicRowColorRenderer_Running(ListrunningRowIndexes,DefaultTableModeldtm){

this.runningRowIndexes=runningRowIndexes;

this.dtm=dtm;

}

//下面就是索引到你想要设置某行的颜色了(注意JTable**这是你的table名,我只是命名了tabel方便识别)

publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,booleanhasFocus,

introw,intcolumn){

if(runningRowIndexes.indexOf(row)>-1){

setBackground(Color.RED);

}else{

setBackground(newColor(115,240,2445));

}

return

//super.super.getTableCellRendererComponent(这里的table要看你自己的table名,)

super.getTableCellRendererComponent(table,dtm.getValueAt(row,column),

isSelected,hasFocus,row,column);

}

}

第4个类就是测试类,在这里要把数值传进去

importjava.util.ArrayList;

importjava.util.List;

publicclassTestFrame{

publicstaticvoidmain(String[]args){

newGUI();

Listtable_info=newArrayList();

//文件名,发件人,收件人,时间,百分比,每秒接受

TableInfot1=newTableInfo("1","2","3","12","0","0","1");

TableInfot2=newTableInfo("1","2","3","12","13","0","2");

TableInfot3=newTableInfo("1","2","3","12","13","0","2");

TableInfot4=newTableInfo("1","2","3","12","0","0","2");

TableInfot5=newTableInfo("1","2","3","12","0","12","212");

TableInfot6=newTableInfo("1","2","3","12","0","0","212");

TableInfot7=newTableInfo("1","2","3","12","3","0","212");

TableInfot8=newTableInfo("1","2","3","12","0","0","0");

TableInfot9=newTableInfo("1","2","3","12","0","0","212");

TableInfot10=newTableInfo("1","2","3","12","0","0","212");

TableInfot11=newTableInfo("1","2","3","12","0","0","212");

table_info.add(t1);

table_info.add(t2);

table_info.add(t3);

table_info.add(t4);

table_info.add(t5);

table_info.add(t6);

table_info.add(t7);

table_info.add(t8);

table_info.add(t9);

table_info.add(t10);

table_info.add(t11);

GUI.showTableInfo(table_info);//GUi调用Show的方法来、//显示

}

}效果窗

口:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1