Jtable例子

实现JTable列的显示和数据添加(历史上最简单的小例子了) import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.ColorModel; import java.util.Vector; import ja 阅读详情

一种古老的技术java swing JFrame表格展示文本数据




package com.chizicheng.evaltable;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Vector;
import java.util.regex.Pattern;

import javax.swing.DefaultCellEditor;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.DefaultTableCellRenderer;

public class EvalTable {
    
    private JFrame frame = null;

    private JTable table = null;

    private Table_Model model = null;

    private JScrollPane s_pan = null;

    private JButton /*button_1 = null, button_2 = null,*/ button_3 = null;
    
    private JTextField textRes;

    private JPanel pane = null;
    
    private double imageCount = 0.0;
    
    public static String[] list;
    
    public static String sourceFolderStr = "C:\\Users\\ewuumeg\\Documents\\MyDocuments\\OpenCV\\Package\\finalDevice_testImageSeg\\History_Home\\history\\2013925_204026_DT890B\\";

    public EvalTable() {
        frame = new JFrame("JTableTest");
        pane = new JPanel();
        button_3 = new JButton("计算");
        button_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                saveData();
            }
        });
        pane.add(button_3);
        textRes = new JTextField("This");
        Dimension di = new Dimension(200, 20);
        textRes.setPreferredSize(di);
        pane.add(textRes);
        model = new Table_Model(20);
        table = new JTable(model);
        table.setBackground(Color.white);
        
        String[] age = { "16", "17", "18", "19", "20", "21", "22" };
        JComboBox<String> com = new JComboBox<String>(age);
        
        TableColumnModel tcm = table.getColumnModel();
        tcm.getColumn(3).setCellEditor(new DefaultCellEditor(com));
        tcm.getColumn(0).setPreferredWidth(80);
        tcm.getColumn(1).setPreferredWidth(100);
        tcm.getColumn(2).setPreferredWidth(50);
        table.setRowHeight(80);
        
        for (String dirItem : list) {
            addData(dirItem);
        }

        s_pan = new JScrollPane(table);

        frame.getContentPane().add(s_pan, BorderLayout.CENTER);
        frame.getContentPane().add(pane, BorderLayout.NORTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 600);
        frame.setVisible(true);

    }

    private void addData(final String jpgName) {
        imageCount += 1.0;
        final String fileStr = jpgName.substring(0, jpgName.indexOf("."));
        String inputfile = sourceFolderStr+fileStr+".txt";
        BufferedReader d;
        String temp = "";
        try {
            d = new BufferedReader(new FileReader(inputfile));
            temp = d.readLine();
            d.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String lastColumn = fileStr + ".jpg";
        model.addRow(temp, true, lastColumn);
        table.getColumnModel().getColumn(0).setCellRenderer(
                new DefaultTableCellRenderer(){

                    /**
                     * 
                     */
                    private static final long serialVersionUID = 1L;
                    public Component getTableCellRendererComponent(JTable table,
                            Object value,
                            boolean isSelected,
                            boolean hasFocus,
                            int row,
                            int column)
                    {
                        String image = sourceFolderStr+list[row];
                        //System.out.println(image);
                        ImageIcon tmpIcon = new ImageIcon(image);
                        this.setIcon(tmpIcon);
                        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);  

                        return c;
                    }
        });
        table.updateUI();
    }

    /*private void removeData() {
        model.removeRows(0, model.getRowCount());
        table.updateUI();
    }*/

    // ������ݣ���ʱ�ǽ���ݴӿ���̨��ʾ����
    private void saveData() {
        int col = model.getColumnCount();
        int row = model.getRowCount();
        for (int i = 0; i < col; i++) {
            System.out.print(model.getColumnName(i) + "\t");
        }
        System.out.print("\r\n");
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                System.out.print(model.getValueAt(i, j) + "\t");
            }
            System.out.print("\r\n");
        }
        System.out.println("------------------------------------");
        
        double trueCount = 0.0;
        for (int k = 0; k < row; k ++) {
            if ((Boolean) model.getValueAt(k, 2)) {
                trueCount += 1.0;
            }
        }
        
        double res = 100.0*trueCount/imageCount;
        double falseCount = imageCount - trueCount;
        
        System.out.println("The false ones are : " + falseCount);
        System.out.println("Total are : " + imageCount);
        System.out.println("The result is: " + res + "%");
        textRes.setText("The result is: " + res + "%");
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File path = new File(sourceFolderStr);
        
        list = path.list(new DirFilter("(.*)jpg"));
        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
        for (String dirItem : list) {
            System.out.println(dirItem);
        }
        
        new EvalTable();
        
        System.out.println("读取图片并初始化JTable完毕\r\n------------------------------------");

    }

}

class DirFilter implements FilenameFilter {
    private Pattern pattern;
    
    public DirFilter(String regex) {
        pattern = Pattern.compile(regex);
    }

    @Override
    public boolean accept(File dir, String name) {
        // TODO Auto-generated method stub
        return pattern.matcher(name).matches();
    }
}

class Table_Model extends AbstractTableModel {

    private static final long serialVersionUID = -7495940408592595397L;

    @SuppressWarnings("rawtypes")
    private Vector content = null;

    private String[] title_name = { "图片", "结果", "是否正确", "图片文件名" };

    @SuppressWarnings("rawtypes")
    public Table_Model() {
        content = new Vector();
    }

    @SuppressWarnings("rawtypes")
    public Table_Model(int count) {
        content = new Vector(count);
    }

    @SuppressWarnings("unchecked")
    public void addRow(String name, boolean sex, String age) {
        @SuppressWarnings("rawtypes")
        Vector v = new Vector(4);
        v.add(0, new Integer(content.size()));
        v.add(1, name);
        v.add(2, new Boolean(sex));
        v.add(3, age);
        content.add(v);
    }

    public void removeRow(int row) {
        content.remove(row);
    }

    public void removeRows(int row, int count) {
        for (int i = 0; i < count; i++) {
            if (content.size() > row) {
                content.remove(row);
            }
        }
    }

    /**
    * �ñ����ijЩֵ���޸ģ�����ҪsetValueAt(Object value, int row, int col)������ϲ���ʹ�޸���Ч
    */
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        if (columnIndex == 2) {
            return true;
        }
        return false;
    }

    /**
    * ʹ�޸ĵ�������Ч
    */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public void setValueAt(Object value, int row, int col) {
        ((Vector) content.get(row)).remove(col);
        ((Vector) content.get(row)).add(col, value);
        this.fireTableCellUpdated(row, col);
    }

    public String getColumnName(int col) {
        return title_name[col];
    }

    public int getColumnCount() {
        return title_name.length;
    }

    public int getRowCount() {
        return content.size();
    }

    @SuppressWarnings("rawtypes")
    public Object getValueAt(int row, int col) {
        return ((Vector) content.get(row)).get(col);
    }

    /**
    * �����������
    */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public Class getColumnClass(int col) {
        return getValueAt(0, col).getClass();
    }
}


JTable实例,java表格实例 在java编程中,表格的使用比较困难,今天我下载到一些比较经典的代码,特与大家分享并学习。 立即下载

相关推荐

JTable示例

这是一个用JAVA作JTable的基础示例,对初学者很有帮助

将数据库信息通过就jtable展示并且有相关操作

Java数据库连接 第一节 通过jdbc连接数据库 第二节 通过datasource开源项目连接数据库 第三节 将数据库信息通过就jtable展示并且有相关操作 文章目录Java数据库连接Java数据库连接的步骤一、资源包的导入JDBCjar包的导入二、连接数据库1.加载驱动2.执行mysql语句完整代码如下 Java数据库连接的步骤 1.导入相对应版本的数据包 2.通过加载驱动,连接数据库 建立连接 3.创建语句对象,执行语句 执行sql语句 4.创建处理集对象,迭代数 处理结果集 5.关闭连

m0_51427019的博客 2419

JTable增加删除按钮实例

JTable增加删除按钮实例,用于java开发

起名大全(内含花翅膀,特殊符号......)

特殊符号大全翅膀符号如下:1、❀҉ এ ృ ةم ʚΐɞ ʚɞ ﻬ ๑ ف ๓ ق2、 ͜ ✿҉ ͜ღ҉ ℘ ೄ ζั͡ ต ԅ️ ✾ ೄ೨3、 Ͽ҉ ✿ ೃ ✿҉͜ ✿ۣ ζั͡✿ ي ℳ ❀ ͜҉4、 ҉ ҉͡ ꧁༺๑๑༻꧂ დ ✎﹏ ๑҉/5、ʚΐɞ ༺ཌ ༒ད༻ ༺༒༻6、꧁❀༒❀꧂7、 ꧁༺༽༾ཊ࿈ཏ༿༼༻꧂扩展资料:其他特殊符号:♠♣♥♦☀☁☂❄☃♨웃유♙♚♛♜♝♞♟♧♡♂♀♠♣♥❖☽☾☪✿♂♀✪❀⚘♔♕♖♗♘❤☜☞☎☏⊙◎☺☻卍卐√×■◆e68a84e8a2ade799

yuanheng418的博客 39万+

串行通信原理及实验仿真

1. 处理器与外部设备通信的两种方式: 并行通信和串行通信 并行通信是指数据的各个位用多条数据线同时进行传输 优点:传输速度快 缺点:占用引脚资源多 串行通信是将数据分成一位一位的形式在一条传输线上逐个传输 优点:通信线路简单,占用引脚资源少 缺点:传输速度慢 2. 串行通信的通信方式: 同步通信和异步通信 同步通信:带有时钟同步信号的数据传输;发送方和接收方在同一时钟的控制下,同步传输数据。 异步通信:不同时钟同步信号的数据传输。发送方和接收方使用各自的时钟控制数据的发送和接收过程。 3. 串行通

gemengxia的博客 4322

(实战)[re:Invent 2018]-001:赛道分析-(致敬1024)

打印log

Rainbow 2780

JTable应用实例

package chap07; import java.awt.BorderLayout; import java.awt.Font; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.TableRowSorter; public class JTable

陈的博客 310

shopee app算法分析第一篇

shopee app算法分析第一篇分析完整算法大概要好几篇,耐心等待下.国内只会发律师函,牛逼,一个律师套话,一个律师发函,大意了(警惕卡通律师头像),希望law可以保护好你,还是干国外好.

2531

JTable用法示例

import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JPanel;import javax.swing.JTable;import java.awt.Color;import java.awt.GridLayout;import javax.swi

来老师的专栏 1万+

2024年03月CCF-GESP编程能力等级认证Python编程五级真题解析

下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入( )。 A. (yr % 400 == 0) or (yr % 4 == 0) B. ( yr % 400 == 0) or (yr % 4 == 0 and yr %100 != 0) C. ( yr % 400 == 0) and ( yr % 4 == 0) D. (yr % 400 == 0) and (yr % 4 == 0 and yr % 100 != 0)

人生就是一个不断学习的过程 746

ican项目四汽车零件智能测量

ican项目四汽车零件智能测量

weixin_72050316的博客 561

常用符号大全

❤❥웃유♋☮✌☏☢☠✔☑♚▲♪✈✞÷↑↓◆◇⊙■□△▽¿─│♥❣♂♀☿Ⓐ✍✉☣☤✘☒♛▼♫⌘☪≈←→◈◎☉★☆⊿※¡━┃♡ღツ☼☁❅♒✎©®™Σ✪✯☭➳卐√↖↗●◐Θ◤◥︻〖〗┄┆℃℉°✿ϟ☃☂✄¢€£∞✫★½✡×↙↘○◑⊕◣◢︼【】┅┇☽☾✚〓▂▃▄▅▆▇█▉▊▋▌▍▎▏↔↕☽☾の•▸◂▴▾┈┊①②③④⑤⑥⑦⑧⑨⑩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍿▓♨♛❖♓☪✙┉┋☹☺☻تヅツッシÜϡﭢ™℠℗©®♥❤❥❣❦❧♡۵웃유ღ♋♂♀☿☼☀☁☂☄☾☽❄☃☈⊙☉℃℉❅✺ϟ☇♤♧♡♢♠♣♥♦☜☞☝✍☚☛☟✌✽✾✿❁❃❋❀⚘☑✓✔√

javaThinker的专栏 6万+

基于YOLOv8深度学习的火焰与烟雾检测系统详解:UI界面 + YOLOv8 + 数据集的实现

通过自动化检测火焰和烟雾,可以提高响应速度,减少潜在的火灾损失,保障人身和财产安全。此外,应用还会显示标记了检测框的视频画面,方便用户直观了解检测效果。同时,前端界面将使用Streamlit来实现,因其可以快速搭建交互式应用,适合我们的需求。要训练一个有效的火焰和烟雾检测模型,我们需要一个包含火焰和烟雾图片的数据集。为了保证模型的准确性和泛化能力,建议收集至少500张火焰和烟雾的图片,保证数据的多样性和代表性。训练过程中,模型会输出每个Epoch的训练损失和验证准确率,便于我们监控模型的学习情况。

YOLO 1321

JTable的实用小例子

这是五斗米很早以前写的例子,最近发现论坛中很多朋友问关于JTable的问题,现整理一下发上来。JTable的实用小例子,有添加、删除数据,在JTable中加入swing其它组件,除0列外其它列可编辑。 import java.awt.BorderLayout;import java.awt.Color;i

8567

K8s-K8s部署Zookeeper+Kafka+ELFK+持久化数据

K8s环境下容器化部署`Zookeeper+Kafka+ELFK`日志收集系统

✅ 专注企业级 Linux/DevOps 运维的实战派 ✅ 已输出上百篇可落地方案 ✅ Shell 脚本开箱即用 ✅ K8s/YAML 环境验证 ✅ 故障排查链路完整复现 1915

Apache Kylin 命令注入漏洞复现(CVE-2020-1956)

Apache Kylin 中的静态 API 存在安全漏洞,可以将os命令与用户输入字符串连接起来,攻击者可以在Kylin没有任何保护或验证的情况下执行任何os命令。

0xSec 1558

JTree及JTable学习,在JTree中嵌套JTable的例子。

想做一个参数配置界面,需要进行树状管理。想要将参数作为叶子几点进行配置。看来下书上的介绍。 也找网上的相关文章参考了一下。效果基本是出来了,但是实际使用感受不理想。想要修改参数时很难用。 如有那位肯不吝指教,非常感谢~ 效果图如下: 代码如下: /* * To change this template, choose Tools | Templates * and o

STK_tianwen的专栏 2605

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JTable 一个最好的例子

装载自:http://www.oschina.net/code/snippet_54100_1230 import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.ut...

weixin_30445169的博客 171

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JTable+数据库(mysql)小例子

import javax.swing.*; import java.awt.*; import java.sql.*; import java.util.*; public class JTableDemo { public static void main (String[] args) { Connection con; Statement stmt; Res...

dianqiugg的专栏 463

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

一个JTable的例子

一个JTable的例子 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing....

sabolasi 85

一个详细的JTable使用例子

最近需要使用JTable,第一次使用,很多不懂,到网上找了很多资料和例子,发现很多例子都没有完全的实现操作数据库里一张表的数据,摸了两天终于懂了一点,写了一个例子,把代码直接复制,修改一下数据库的连接就可以运行了.使用JTable操作数据库的一张表,实现增删改,显示表里所有的数据,点击''添加''按钮在表格插入一行填写数据保存到数据库,可一次插入多行,一次可选择任意多行进行删除,一次可以修改多行的

如果可以,我愿争取 3273

JTable的实用小例子,实现添加、删除

import java.awt.BorderLayout;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Vector;import javax.swing.DefaultCellEditor;import javax.sw

1399

java jtable demo_Java Swing JTable使用例子

时间:2019-10-04概述:JTableJava Swing JTable使用例子,涉及到组合框、事件监听器、table滚动条等相关技巧:import javax.swing.table.AbstractTableModel;import javax.swing.event.*;import javax.swing.*;import java.awt.*;import java.awt.eve...

weixin_42142062的博客 197
上一篇: MyEclipse设置代理
下一篇: 理解HTTP session原理及应用
一装到底
博客等级 码龄18年 13粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值