欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    JTable设置行背景颜色及实现打印功能的示例代码精品资料.doc

    • 资源ID:96697128       资源大小:204KB        全文页数:34页
    • 资源格式: DOC        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    JTable设置行背景颜色及实现打印功能的示例代码精品资料.doc

    JTable设置行背景颜色及实现打印功能的示例代码2008-01-14 15:24之前JAVA图形化编程一直用得很少,最近应朋友需要理事了两个.java文件,用于实现JTable设置行背景颜色及实现打印功能,相应示例代码如下:JAVA文件一,PlanetTable.classimport java.awt.BorderLayout;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;/* 本类为JTable一个简单应用,实现了JTable的行颜色设置及表格的打印功能* */public class PlanetTable public static void main(String args)    JFrame frame = new PlanetTableFrame();   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   frame.setVisible(true);class PlanetTableFrame extends JFrame public PlanetTableFrame()    / 用于控制每一行颜色的数组   String color = "H", "A", "F", "E", "W" ;   setTitle("PlanetTable");   setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);   / 定义JTable,实例成自己扩展的JTable类,并传入用于设定颜色的数组   final JTable table = new StyleTable(cells, columnNames, color);   / 下面这行代码可实现相邻两行颜色交替的效果,注意与上一行的区别/ final JTable table = new StyleTable(cells, columnNames);   add(new JScrollPane(table), BorderLayout.CENTER);   JButton printButton = new JButton("Print");   printButton.addActionListener(new ActionListener()     public void actionPerformed(ActionEvent event)      try       table.print();     catch (java.awt.print.PrinterException e)       e.printStackTrace();            );   JPanel buttonPanel = new JPanel();   buttonPanel.add(printButton);   add(buttonPanel, BorderLayout.SOUTH);private Object cells =     "Mercury", new Double(2440.0), new Integer(0),      new Boolean(false), Color.yellow ,    "Venus", new Double(60520.0), new Integer(0), new Boolean(false),      Color.yellow ,    "Earth", new Double(6378.0), new Integer(1), new Boolean(false),      Color.blue ,    "Mars", new Double(3397.0), new Integer(2), new Boolean(false),      Color.red ,    "Jupiter", new Double(71492.0), new Integer(16),      new Boolean(false), Color.orange ;private String columnNames = "Planet", "Radius", "Moons", "Gaseous",    "Color" ;private static final int DEFAULT_WIDTH = 400;private static final int DEFAULT_HEIGHT = 200;下面的类文件是实现颜色控制的核心所在,对于需要有背景颜色设定的表格只需在实例化JTable对象处,实例成StyleTable即可,注意前面绿色背景的文字。JAVA文件二,StyleTable .classimport java.awt.Color;import java.awt.Component;import javax.swing.JTable;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;/* 本类实现了对JTable颜色的控制,提供了两套方案: * 1.实现了表格行两种颜色交替的效果 * 2.实现了用一个控制颜色的字符串数组来设置所对应行的颜色* * author Sidney* version 1.0 (2008-1-14)*/public class StyleTable extends JTable /* 用于设定行颜色的数组*/private String color = null;public StyleTable()    super();public StyleTable(Object rowData, Object columnNames)    super(rowData, columnNames);   paintRow();public StyleTable(Object rowData, Object columnNames, String color)    super(rowData, columnNames);   this.color = color;   paintColorRow();/* 根据color数组中相应字符串所表示的颜色来设置某行的颜色,注意,JTable中可以对列进行整体操作* 而无法对行进行整体操作,故设置行颜色实际上是逐列地设置该行所有单元格的颜色。*/public void paintRow()    TableColumnModel tcm = this.getColumnModel();   for (int i = 0, n = tcm.getColumnCount(); i < n; i+)     TableColumn tc = tcm.getColumn(i);    tc.setCellRenderer(new RowRenderer();   public void paintColorRow()    TableColumnModel tcm = this.getColumnModel();   for (int i = 0, n = tcm.getColumnCount(); i < n; i+)     TableColumn tc = tcm.getColumn(i);    tc.setCellRenderer(new RowColorRenderer();   /* 定义内部类,用于控制单元格颜色,每两行颜色相间,本类中定义为蓝色和绿色。* * author Sidney* */private class RowRenderer extends DefaultTableCellRenderer    public Component getTableCellRendererComponent(JTable t, Object value,     boolean isSelected, boolean hasFocus, int row, int column)     /设置奇偶行的背景色,可在此根据需要进行修改    if (row % 2 = 0)     setBackground(Color.BLUE);    else     setBackground(Color.GREEN);       return super.getTableCellRendererComponent(t, value, isSelected,      hasFocus, row, column);   /* 定义内部类,可根据一个指定字符串数组来设置对应行的背景色* * author Sidney* */private class RowColorRenderer extends DefaultTableCellRenderer    public Component getTableCellRendererComponent(JTable t, Object value,     boolean isSelected, boolean hasFocus, int row, int column)     /分支判断条件可根据需要进行修改    if (colorrow.trim().equals("E")      setBackground(Color.RED);    else if (colorrow.trim().equals("H")      setBackground(Color.CYAN);    else if (colorrow.trim().equals("A")      setBackground(Color.BLUE);    else if (colorrow.trim().equals("F")      setBackground(Color.ORANGE);    else      setBackground(Color.WHITE);           return super.getTableCellRendererComponent(t, value, isSelected,      hasFocus, row, column);   我是刚学Swing的,请大哥们帮帮小弟!很急,我已经郁闷3天了! JTable当我选中一行时,就改变这一行的背景色!问题点数:50 回复次数:5 修改 删除 举报 引用 回复 加为好友 发送私信 在线聊天· diggywang ·· 等级:发表于:2007-04-26 21:21:571楼 得分:13用tablecellrenderer修改 删除 举报 引用 回复 加为好友 发送私信 在线聊天· chuan122345 ·· 等级:发表于:2007-04-27 12:29:052楼 得分:13public       static       void       makeFace(JTable       table)                                         try                                         DefaultTableCellRenderer       tcr       =       new       DefaultTableCellRenderer()                                                 public       Component       getTableCellRendererComponent(JTable       table,                                                           Object       value,       boolean       isSelected,       boolean       hasFocus,                                                           int       row,       int       column)                                                         if       (row       %       2       =       0)                                                           setBackground(Color.white);       /设置奇数行底色                                                   else       if       (row       %       2       =       1)                                                           setBackground(new       Color(206,       231,       255);       /设置偶数行底色                                                   return       super.getTableCellRendererComponent(table,       value,                                                                   isSelected,       hasFocus,       row,       column);                                                                             ;                                   for       (int       i       =       0;       i       <       table.getColumnCount();       i+)                                                 table.getColumn(table.getColumnName(i).setCellRenderer(tcr);                                                                                       catch       (Exception       ex)                                         ex.printStackTrace();                                                     修改 删除 举报 引用 回复 加为好友 发送私信 在线聊天· chuan122345 ·· 等级:发表于:2007-04-27 12:31:463楼 得分:0主要是写个REANDER,我以前做过这效果 publicclass   JTableCellRenderer   extends   JPanel   implements   TableCellRenderer                 private   JComponent   component   =   null;                 privatestaticfinallongserialVersionUID   =   4814418916385836965L;                 /*透明?*/                 privatebooleanisOpaque   =   true;         public   Component   getTableCellRendererComponent(JTable   table,   Object   value,                         boolean   isSelected,   boolean   hasFocus,   int   row,   int   column)                                       /*透明?*/                   isOpaque   =   table.isOpaque();                   /*获得TableModel*/                   MyTableModel   myTableModel   =   (MyTableModel)table.getModel();                                     boolean   canSelected   =   true;                   List   canSelectedList   =   myTableModel.getCanBeSelectedModel();                   if(canSelectedList   !=   null)                 if(row   <   canSelectedList.size()                                   if(!(Boolean)canSelectedList.get(row).booleanValue()                                                   canSelected   =   false;                                                   else                                   canSelected   =   false;                                                     /*设定用于显示Cell的panel*/                   JPanel   cellPanel   =   new   JPanel();                   /*绘制Cell*/                   getCell(table,cellPanel,row,canSelected,isSelected);                                     int   colorChangeFlag   =   row/myTableModel.getDiv();                   /*是否透明*/                   if(isOpaque)                                   if(colorChangeFlag   %   2   =   0)                                                   cellPanel.setBackground(myTableModel.getRowBackgroundColor();                                   else                                                   cellPanel.setBackground(myTableModel.getFirstRowBackgroundColor();                                                                     /*设定是否透明   */                   cellPanel.setOpaque(isOpaque);                                     if(isSelected)                                   cellPanel.setBackground(table.getSelectionBackground();                                       rePaintComponents();                   /               MainRun.middlePanel.repaint();                 return   cellPanel;                         privatevoid   getCell(JTable   table,JPanel   cellPanel,int   row,                                   boolean   canSelected,boolean   isSelected)                                     /*设定对齐方式*/                 cellPanel.setLayout(new   FlowLayout(0,0,0);                 /*获得TableModel*/                 MyTableModel   myTableModel   =   (MyTableModel)table.getModel();                 /*获得列数*/                 int   col   =   myTableModel.getCol();                                 for(int   i   =   0;   i   <   col   ;   i+   )                 /*获得某个单元格*/                         Object   cellObject   =   myTableModel.getValueAt(row,i);                         /*/                         JComponent   tempLabel   =   null;                         /*String*/                         if(cellObject   instanceof   String)                                 tempLabel   =   new   JLabel(String)cellObject);                                 if(canSelected)                                                 Color   cellColor   =   myTableModel.getColor(row,i);                                                 tempLabel.setForeground(cellColor);                                 else                                   tempLabel.setForeground(Color.gray);                                                                 if(isSelected)                                   tempLabel.setForeground(table.getSelectionForeground();                                                         /*Icon*/                         elseif(cellObject   instanceof   ImageIcon)                                 tempLabel   =   new   JLabel(ImageIcon)cellObject);                         /*TextBox*/                         elseif(cellObject   instanceof   JTextField)                                     tempLabel   =   new   JTextField();                         else                                     tempLabel   =   new   JLabel();                                                 if(cellObject   instanceof   JTextField)                                                             else                                     /*对齐方式*/                                                 switch(myTableModel.getCellLayout(i)                                                 /*左*/                                                 case   0:                                                                   (JLabel)tempLabel).                                                                                   setHorizontalAlignment(JLabel.LEFT);                                                                   break;                                                   /*中*/                                                 case   1:                                                                   (JLabel)tempLabel).                                                                                   setHorizontalAlignment(JLabel.CENTER);                                                                   break;                                                 /*右*/                                                 case   2:                                                                   (JLabel)tempLabel).                                                                                   setHorizontalAlignment(JLabel.RIGHT);                                                                   break;                                                                                                 /*宽度设定*/                                 int   width   =   myTableModel.getWidth(row,i);                                 /*size设定*/                                 tempLabel.setPreferredSize                                 (new   Dimension(width,table.getRowHeight();                                 /*字体设定*/                                 tempLabel.setFont(table.getFont();                                                                 /*设定是否透明*/                                 cellPanel.add(tempLabel);                                                                   protectedvoid   rePaintComponents()                   if   (component   !=   null)                                                   for   (int   i   =   0;   i   <   component.length;   i+)                                                                   if   (componenti   !=   null)                                                                                   componenti.repaint();                                                                                                                                                                                 public   JComponent   getComponent()                                   returncomponent;                                 publicvoid   setComponent(JComponent   c

    注意事项

    本文(JTable设置行背景颜色及实现打印功能的示例代码精品资料.doc)为本站会员(封****n)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开