javaJtable经典列设置+表格颜色.docx
- 文档编号:8875170
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:10
- 大小:45.36KB
javaJtable经典列设置+表格颜色.docx
《javaJtable经典列设置+表格颜色.docx》由会员分享,可在线阅读,更多相关《javaJtable经典列设置+表格颜色.docx(10页珍藏版)》请在冰豆网上搜索。
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;
import.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];
Vector
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(,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(List
//正在运行行索引列表,
List
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{ privateList privateDefaultTableModeldtm; //一个有参的构造函数 publicRowColorRenderer_Running(List 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(); List //文件名,发件人,收件人,时间,百分比,每秒接受 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的方法来、//显示 } }效果窗 口:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaJtable 经典 设置 表格 颜色