实现Java JTable的应用案例

代码如下

import Java.awt.Component;
import java.awt.Dimension;
import java.awt.FontMetrics;   

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;   

public class Main extends DefaultTableCellRenderer {
        private static final long serialVersionUID = 1L;

        public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {   

        JTableHeader header = table.getTableHeader();
        setForeground(header.getForeground());
        setBackground(header.getBackground());
        setFont(header.getFont());
        setOpaque(true);
        setBorder(UIManager.getBorder("TableHeader.cellBorder"));   

        // 得到列的宽度
        TableColumnModel columnModel = table.getColumnModel();
        int width = columnModel.getColumn(column).getWidth();   

        value = getShowValue(value.toString(), width);
        setText(value.toString());
        setSize(new Dimension(width, this.getHeight()));   

        setHorizontalAlignment(JLabel.CENTER);   

        return this;
    }   

    private Object getShowValue(String value, int colWidth) {
        FontMetrics fm = this.getFontMetrics(this.getFont());
        int width = fm.stringWidth(value.toString());
        int test = fm.stringWidth("好");
        System.out.println(test * value.length());
        System.out.println(width);
        if (width < colWidth) {
            return value;
        }
        StringBuffer sb = new StringBuffer("<html>");
        char str;
        int tempW = 0;
        for (int i = 0; i < value.length(); i++) {
            str = value.charAt(i);
            tempW += fm.charWidth(str);
            if (tempW > colWidth) {
                sb.append("<br>");
                tempW = 0;
            }
            sb.append(str);
        }
        sb.append("</html>");
        return sb.toString();
    }
}

  运行结果
<ignore_js_op>

详细说明:http://java.662p.com/thread-3683-1-1.html

时间: 2024-07-29 07:04:40

实现Java JTable的应用案例的相关文章

java中一个memcached案例

下面先来一个网络上的案例,这个案例比较简单,直接在类中进行一些参数的配置,具体代码如下: package com.wzpmt; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class MemCachedManager

JAVA Excel API学习案例

先贴代码吧,运行一下,看看效果,然后看看注释,再看看代码后面的基础介绍 创建一个新excel并写入数据: public static void myExcel2() throws IOException, WriteException { WritableWorkbook wwb = Workbook.createWorkbook(new File("F:" + File.separator + "myExcel1.xls")); // 创建excel表格中的一个s

Java元注解,简单案例

[注解] 程序中有 注释 和注解 * 注释:给开发人员. * 注解:给计算机看的. 注解使用:学习框架支持注解开发. [JDK提供的注解] @Override :描述方法的重写. @SuppressWarnings :压制警告. @Deprecated :标记过时. 自定义注解: 定义一个类:class 定义一个借口:interface 定义一个枚举:enum 定义一个注解:@interface 用法: @interface MyAnno1{ } 带有属性的注解: @interface MyAn

JAVA网络编程UDP案例

Java网络编程.UDP案例 发送端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class SendUDP { public static vo

JAVA实战教程_JAVA案例开发之JAVA开发微信二维码大数据开发03

大家好,这次是第三个课时的视频,欢迎大家继续学习. 视频简介:本视频是关于JAVA实战教程,JAVA开发微信二维码大数据系统.这个JAVA开发案例可以协助一些从零基础开始学习JAVA,正处于理论走完实践的路程上的初学者能接触到实际开发项目过程中,在实践当中巩固自己的JAVA方面的知识外,更能在项目案例当中学到解决在JAVA学习或者实践当中遇上问题的一些解决方式.仅供参考!自设交流群:457036818,欢迎一起加入交流. PS:该案例共十个课时,本小节为第二课时 课程原地址:http://www

JAVA实战教程_JAVA案例开发之JAVA开发微信二维码大数据系统02

hello,上一次我们上传了第一个课时的视频,现在当然是上传第二个视频咯. 视频简介:本视频是关于JAVA实战教程,JAVA开发微信二维码大数据系统.这个JAVA开发案例可以协助一些从零基础开始学习JAVA,正处于理论走完实践的路程上的初学者能接触到实际开发项目过程中,在实践当中巩固自己的JAVA方面的知识外,更能在项目案例当中学到解决在JAVA学习或者实践当中遇上问题的一些解决方式.仅供参考!自设交流群:457036818,欢迎一起加入交流. PS:该案例共十个课时,本小节为第二课时 课程原地

Java图形界面实战案例——实现打字母游戏

实现打字母的游戏 这次这个案例可以说是头几次所讲的内容的一个技术汇总,主要是 运用了几大块的知识.我们先来定义一下案例的背景:在一个300*400的窗体上,有10个随机产生的字母下落,在键盘上敲击字母,若是敲对了就消掉,初始化的成绩为1000分,每次敲对一个字母就加上10分,如果在字母落到了屏幕的下方还没有敲对的话则判定为失败,就扣除100分. 我们还是老样子,先来进行步骤的划分 1.做满天星 2.把星星改成随机的10个字母 3.让字母落下,如果字母落出了屏幕就生成新的字母,并从屏幕的上方重新出

java泛型好处及案例

       Java 泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样.        可以在集合框架(Collecti

Java基础学习-HelloWorld案例的编写和运行

一.HelloWorld案例的流程: 第一步:编写一个.java的源文件.通过Windows自带的记事本文件就可以完成. 第二步:将.java的源文件通过编译器编译生成一个.class的字节码文件.JDK的bin目录下的javac命令完成. 第三步:将.class的字节码文件通过解释器解释执行,最终我们在控制台看到我们想要看到的结果.JDK的bin目录下的java命令完成. 注意:javac命令和java命令只能在JDK的bin目录下进行访问,所以我们把编写源文件的动作也放在了JDK的bin目录