很简单的透明JTable,效果如下图。但是头部无法透明,希望有知道的可以指点一下。

代码如下:

package ui.testworker;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;public class Simple extends JFrame
{private static final long serialVersionUID = 1L;private static final int MIN_WIDTH = 1270;private static final int MIN_HEIGHT = 700;private Color color1 = new Color(225,237,233);private Color color2 = new Color(76,124,206);private JTable fileTable; public Simple(){//设置为windows风格try{String windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; UIManager.setLookAndFeel(windows);}catch(Exception e){}addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});/** 生成一个panel,并将panel的背景绘制成指定颜色* 然后将使用setContentPane方法将窗口的panel设置为这个panel*/JPanel jp = new JPanel(){private static final long serialVersionUID = 1L;protected void paintComponent(Graphics   g){ //使用Graphics2D绘制渐变色彩Graphics2D g2d = (Graphics2D) g;g2d.setPaint(new GradientPaint(0, 0, color1, this.getWidth(), this.getHeight(), color2));g2d.fill(new Rectangle(0, 0,this.getWidth(), this.getHeight()));} };this.setContentPane(jp);this.setLayout(new BorderLayout()); initTable();/** 这里将JScrollPane设置为透明的。* JScrollPane包括两个部分,一个是本身,另一个是中间的viewport* 若只将JScrollPane设置为透明,则只是边缘透明,中间的viewport(也就是容纳表格的地方依然不透明)*/JScrollPane scrollPane = new JScrollPane();scrollPane.getViewport().setOpaque(false);//将JScrollPane设置为透明scrollPane.setOpaque(false);//将中间的viewport设置为透明scrollPane.setViewportView(fileTable);//装在表格getContentPane().add(scrollPane,BorderLayout.CENTER);Toolkit tk = this.getToolkit();Dimension dm = tk.getScreenSize();//窗口启动时,在屏幕中间this.setBounds((dm.width - MIN_WIDTH) / 2,(dm.height - MIN_HEIGHT) / 2, MIN_WIDTH, MIN_HEIGHT);this.setVisible(true);}private void initTable(){//初始化tableString[] columnName = new String[]{"文件名","大小","用户","上传时间"};Object[][] columnValues = new Object[][]{{"楚留香传奇","232134 KB","fykhlp","2012-07-28 19:36:21"},{"楚留香传奇","232134 KB","fykhlp","2012-07-28 19:36:21"},{"楚留香传奇","232134 KB","fykhlp","2012-07-28 19:36:21"},{"楚留香传奇","232134 KB","fykhlp","2012-07-28 19:36:21"},{"楚留香传奇","232134 KB","fykhlp","2012-07-28 19:36:21"}};fileTable = new JTable(columnValues,columnName);fileTable.setRowHeight(25); fileTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); fileTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fileTable.setIntercellSpacing(new Dimension(0, 0)); /** 将表格设置为透明,表格同样包括表格本身和其中的内容项* 仅仅将表格本身设置为透明也没有用,应该将其中的内容项也设置为透明* 内容项的设置是通过设置渲染器的透明来实现*/fileTable.setOpaque(false);DefaultTableCellRenderer render = new DefaultTableCellRenderer(); render.setOpaque(false); //将渲染器设置为透明//将这个渲染器设置到fileTable里。这个设置在没有另外专门对column设置的情况下有效//若你对某个column特殊指定了渲染器,则对于这个column,它将不调用render渲染器//因此为了保证透明,如果你对column额外指定了渲染器,那么在额外的渲染器里也应该设置透明fileTable.setDefaultRenderer(Object.class,render);//设置显示范围Dimension viewSize = new Dimension(); viewSize.width = fileTable.getColumnModel().getTotalColumnWidth(); ; viewSize.height = 10 * fileTable.getRowHeight(); fileTable.setPreferredScrollableViewportSize(viewSize); //设置头部//头部无法透明,我也不知道为什么,若你知道怎么做,非常感谢告诉我JTableHeader header = fileTable.getTableHeader(); header.setPreferredSize(new Dimension(30, 26)); header.setOpaque(false);TableCellRenderer headerRenderer = header.getDefaultRenderer(); if (headerRenderer instanceof JLabel) {((JLabel) headerRenderer).setHorizontalAlignment(JLabel.CENTER); ((JLabel) headerRenderer).setOpaque(false);   }}public static void main(String[] args){new Simple();}}

JAVA-SWING:生成透明JTable相关推荐

  1. JAVA-SWING:生成透明JTable的改进1

    前面写了个文章,生成透明JTable,但是JTable头部的标题部分不是透明的.不断的学习后,终于找到将头部也设置为透明的方法.先上效果: 代码如下: package ui.testworker;im ...

  2. JAVA-SWING:生成透明JTable的改进2

    这一次,给看不见分割线的header加上了分割线.其实很简单,header本质也是一个JTable,它也要用到渲染器,那么给它加上一个自定义的渲染器,在这个渲染器里手动绘制分割线即可.效果图: 代码如 ...

  3. Java Swing编程:JTable表格

    表格是GUI编程中使用较多,但也是最麻烦的一个控件之一.表格是用来显示二维数据,提供编辑,选择等功能.如果只是显示数据,这还是非常easy的,只要在JTable中传入二维数组或集合就可以了. 表格是G ...

  4. Java Swing 开发之JTable中在添加组件(JCheckBox)

    2019独角兽企业重金招聘Python工程师标准>>> 首先是创建表格 JTable demoTable= new JTable(); DefaultTableModel dtmDe ...

  5. java jtable 复选框_java swing如何在JTable一个单元格添加多个复选框

    展开全部 java swing中在jTable中添加多个复选框的方32313133353236313431303231363533e59b9ee7ad9431333337616566式如下:impor ...

  6. Java Swing高级组件——表格组件

    Swing 表格组件 表格是最常用的数据统计形式之一,在日常生活中经常需要表格来统计数据.在 Java Swing 中由JTable类实现表格. 一,创建表格 在 JTable 类中除了默认的构造方法 ...

  7. 2020 java swing jtable 合并_java学生管理系统(界面版)

    运行截图 ​ 项目说明: 本系统界面我个人就从简设计了,本来打算使用windowbuilder插件设计的,可想到使用windowbuilder插件之后导致代码冗余,会影响到代码可读性,可能对小白不友好 ...

  8. java swing 表格控件_java swing 开发 -JTable

    最近利用空闲时间自己琢磨了一下java swing 编程,其实在从事javaweb之前我一直向往的就是java swing 开发,不知道为什么可能当时觉得Windows上的exe程序很是神奇,关于wi ...

  9. java jtable方法,java swing之JTable跟JList

    java swing之JTable和JList 1.JTable JTable构造方法: JTable(TableModel dm) JTable(object[][]rowData,object[] ...

最新文章

  1. layoutSubviews 调用情况
  2. maven的配置-2019-4-13
  3. 【shell 脚本】删除 由windows传入linux含有的 ^M
  4. 监控报警开发之zabbix语音电话报警方案联想
  5. vue class绑定方式
  6. 工作183:动态渲染数据 数据在数字字典里面
  7. 阿里带火的中台,究竟是个啥?
  8. 怎么在电脑上任意截屏_草地上打滚、墙上任意涂鸦,幼儿园让孩子“想怎么玩就怎么玩”...
  9. hashmap怎么取值_HashMap?面试?我是谁?我在哪?我会啥?
  10. Sequelize小记
  11. tsql语句中的t是什么_TSQL中的Java HashCode
  12. 引入Hub再生的最短帧长及主机之间距离的最大值计算
  13. Linux fread函数例程,21.2.9 文件读写实例--实现cp命令
  14. 寒假第七周 2.22 --- 2.28
  15. 卧槽!真可恶,竟然有人贩卖儿童软色情表情包,网友:...
  16. Python编程——函数
  17. 小米笔记安装双系统linux,小米笔记本电脑怎么安装双系统?-小米win7
  18. librdkafka------C kafka Client
  19. vue解决mintui中使用MessageBox弹窗拦截,移动端多次点击手机的物理返回键,选择确定后页面返回不正确问题
  20. js实现oss批量下载文件_jquery批量下载文件

热门文章

  1. openssl搭建私有CA
  2. 如何在一个日期值上加上分钟值得到新的日期
  3. 关于C#传给视图的字符串带有Html转义字符的处理
  4. 行为型模式:模板方法 1
  5. 磨刀霍霍:我李汉三又回来写代码啦~
  6. Cap22_信息系统安全管理
  7. Sklearn-RandomForest
  8. SQL Server 2012 无人值守安装(加入新实例)
  9. 什么是Hadoop,怎样学习Hadoop
  10. docker-compose的一些理解