带复选框的JTable

JTable实现C列放入复选框 1,MyTableModel 继承 DefaultTableModel类,主要增加: 成员变量 Class[] typeArray = {Object.class,Object.class,Object.class,Object.class, Object.class, Boolean.class}; 方法 public void selectAllOrNull(boolean value){ ... 阅读详情

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;

public class ConfirmPane extends JDialog {
	int WIDTH = 1200;
	int HEIGHT = 490;
	JPanel panel = new JPanel();
	Graphical g = null;
	public ConfirmPane(Graphical owner,Object[][]obj){
		super(owner, true);
		g = owner;
		Object[] columnTitle = { "收件人", "收件地址", "抄送人", "抄送地址", "附件" };
		DefaultTableModel dtm = new DefaultTableModel(columnTitle, 0);
		for (Object[] v : obj) {
			dtm.addRow(v);	
		}
		final JTable table = new JTable(dtm){
			@Override
			 public boolean isCellEditable(int row, int column)  { 
				//表格不允许被编辑
//				if (column == 5) {
//					return true;//如果是选项框的行则可以编辑
//				}
                return false;
             }
			/**
			 * 默认情况下这个方法不用重新实现的,但是这样就会造成如果这个列式boolean的类型,就当做string来处理了
			 * 如果是boolean的类型那么用checkbox来显示
			 */
			@Override
			public Class<?> getColumnClass(int columnIndex) {
				return getValueAt(0, columnIndex).getClass();
			}
		};
		table.setSize(WIDTH, HEIGHT);
		final MyCheckBoxRenderer check = new MyCheckBoxRenderer();
//		TableColumn tc = table.getColumn("选择");
//		tc.setHeaderRenderer(check);

		table.getTableHeader().addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (table.getColumnModel().getColumnIndexAtX(e.getX()) == 5) {// 如果点击的是第0列,即checkbox这一列
					JCheckBox Checkbox = (JCheckBox) check;
					boolean b = !check.isSelected();
					check.setSelected(b);
					table.getTableHeader().repaint();
					for (int i = 0; i < table.getRowCount(); i++) {
						table.getModel().setValueAt(b, i, 5);// 把这一列都设成和表头一样
					}
				}
			}
		});
		//-----------------设置列宽
		int width = 70;
		TableColumn c = table.getColumnModel().getColumn(0);
		c.setPreferredWidth(width);
		c.setMaxWidth(width);
		c.setMinWidth(width);
		c = table.getColumnModel().getColumn(1);
		width = 200;
		c.setPreferredWidth(width);
		c.setMaxWidth(width);
		c.setMinWidth(width);
		c = table.getColumnModel().getColumn(2);
		width =70;
		c.setPreferredWidth(width);
		c.setMaxWidth(width);
		c.setMinWidth(width);
		c = table.getColumnModel().getColumn(3);
		width = 330;
		c.setPreferredWidth(width);
		c.setMaxWidth(width);
		c.setMinWidth(width);
		//----------------------
		table.setPreferredScrollableViewportSize(new Dimension(WIDTH-50, HEIGHT-100));
		JScrollPane jp = new JScrollPane(table);
		jp.setViewportView(table);
		jp.setSize(1000, HEIGHT-30);
		
		JButton ok = new JButton("确定");
		ok.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				// 发送邮件。
				g.bar.setValue(0);
				g.bar.setString("正在发送 - " + g.bar.getValue() + "%");
				SendEmailThread sendEmail = new SendEmailThread();
				sendEmail.setGraphical(g);
				sendEmail.setProgressBar(g.bar);
				sendEmail.start();
				ConfirmPane.this.dispose();
			}
		});
		JButton cancel = new JButton("取消");
		cancel.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				ConfirmPane.this.dispose();
				System.out.println("取消发送");
			}
		});
		
		panel.add(jp);
		panel.add(ok);
		panel.add(cancel);
		this.add(panel);
	}
	/**
	 * 初始化界面
	 */
	void init() {
		// 设置程序显示在屏幕中间
		Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
		int w = size.width;
		int h = size.height;
		int x = (w - WIDTH) / 2;
		int y = (h - HEIGHT) / 2;
		this.setBounds(x, y, WIDTH, HEIGHT);
		this.setResizable(false);
		this.setTitle("发送确认");
		this.setVisible(true);
		this.setDefaultCloseOperation(HIDE_ON_CLOSE);
	}

	/**
	 * 运行程序的主要方法。 主要功能:应用主题、创建面板
	 */
	public static void invokeApp(final Graphical owner,final Object[][] row) {
		try {
			SwingUtilities.invokeLater(new Runnable() {
				public void run() {
					try {
						JFrame.setDefaultLookAndFeelDecorated(true);
						JDialog.setDefaultLookAndFeelDecorated(true);
						UIManager.setLookAndFeel("com.incors.plaf.alloy.AlloyLookAndFeel");
						new ConfirmPane(owner,row).init();
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

class MyCheckBoxRenderer extends JCheckBox implements TableCellRenderer {

	public MyCheckBoxRenderer() {
		this.setBorderPainted(true);
	}

	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		// TODO Auto-generated method stub
		return this;
	}
}


设置固定列宽的时候,一定要设置最大和最小列宽,否则无法固定。

JTable中,显示checkbox以及更改选中状态 <br />继续做完的JTable的来学习和实践,默认情况下构造的JTable,内容是死的,不能更改,可以通过实现3个TableModel来作为JTable构造时候的参数穿进去,就可以灵活的对JTable就行构造了,来看下我这个JTable的例子,带上注释就好了。。<br />/** * */ package com.baseframework.core.ui.component; import javax.swing.JTable; import javax.swing.table.A 阅读详情

相关推荐

Jtable中加入复选框的两种方法

介绍了jtable中加入复选的难点的俩个例子,方便大家更好的学习.

Java中插入表格(JTable)及在表格中加入复选框

package menu; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import...

仙女的博客 7327

JTable添加CheckBox

一个JTable里添加CheckBox的完整例子,包括表头的JCheckBox全选联动

Java的JTable插入复选框,复选框的数量限制

关于javaSwing的JTable插入复选框,并且复选框可以居中,可以设置数量限制和点击限制。 搜了很多文章,但发现并不合我意,没有我想要的需求,本篇文章的重点就是,让JTable中的复选框可以有数量限制,首先说一下效果,假如有五个复选框,你想让用户只能点击两个,当点击第三个的时候就会留下后两次选择的,看不懂没关系,后边我会有演示,闲话不说上代码。 /** * 此类不用单独创建,可以当一个内部类使用,写到你生成JTable的那个类里, * 然后用你创建的JTable.setMo

zhangwenhaodalao的博客 1567

大话西游2单机版V8一键架设教程:5分钟搞定GM权限和仙玉修改(附完整物品代码表)

本文详细讲解了大话西游2单机版V8的一键架设教程,包括5分钟快速配置GM权限、仙玉修改及物品代码使用技巧。通过分步指导和服务端配置详解,帮助玩家轻松掌握游戏管理功能,重温经典回合制体验。附完整物品代码表,助你快速获取稀有道具和神兽。

weixin_42557830的博客 1227

大红球预警版-精选+自定义板块监控

这是一款简单易用的股票大单资金监控插件,兼容通达信软件,可嵌入分时图或定制版面。它以红绿圆球直观显示主力买卖情况(红球为买,绿球为卖),支持300万以上大单语音播报。插件提供实时资金流向分析、多股同时监控、自定义预警条件等功能,无需L2账号。用户可自由切换图形/列表模式,监控特定板块,并配合幻影软件实现自动交易。虽然上涨股通常红球占优,但需结合其他指标综合判断。该插件完全免费,包含详细视频教程,适合新手使用。

guleba的博客 1792

【swing】Jtable表头及表格加CheckBox

Overrideif (column == 1 || column == 2) {// 列不可编辑} else {super();i++) {

smileageHi的博客 1396

用workbuddy自定义Skill:手把手搭建AI炒股分析助手

AI Agent正成为个人投资研究的重要工具,而Skill作为行为规范,能让AI输出保持稳定与专业。在AI Agent应用中,很多人分不清Skill与Agent的区别:Agent负责目标拆解与执行,Skill则固化分析流程与输出模板。借助本地工作台workbuddy,用户可自定义Skill,实现从市场环境检查到财务排雷的五段式分析。通过调低温度参数、设定数据验证规则,该方案能有效避免大模型凭空编造数据,帮助个人投资者快速完成基本面体检、资金面观察与风险清单生成。本文基于一套可直接套用的配置与一个月实测,展示

weixin_29038537的博客 515

java jtable 复选框_java – JTable中带复选框的多行选择

我有一个带复选框的JTable作为列之一.我还在标题中有一个复选框来检查/取消选中所有.AFAIK JTable的默认行为是,如果选择新行,它将取消选择之前选择的所有行.但是我们可以通过复选框实现CTRL点击行为.保留以前选定的行.我面临的主要问题是使用复选框启用多个JTable行选择.预期产出检查第一行然后选择第一行,如果选中第三行,则选择第三行以及第一行(已经选中并选中)实际输出检查并选择第一...

weixin_34824510的博客 1633

ChatBI实战:如何用Vanna和WrenAI搭建企业级智能问数系统(附避坑指南)

本文详细介绍了如何利用Vanna和WrenAI搭建企业级智能问数系统(ChatBI),解决多源异构数据整合、语义理解准确率和系统性能安全等核心挑战。通过实战案例和优化策略,展示了这一组合方案在提升查询效率、实现业务自主分析和动态探索式分析方面的显著优势,特别适合企业级数据查询需求。

weixin_29047919的博客 398

YOLOv13添加DRB模块map暴涨12.33!准确率提升8.56!召回率提升15.66

本文介绍了在YOLOv13模型中添加DRB模块的改进方法。实验结果显示,添加DRB模块后模型性能显著提升,mAP暴涨12.33%,准确率提升8.56%。文章详细说明了移植过程,包括创建yolov13-DRB.yaml配置文件、修改tasks.py和__init__.py文件,以及引入UniRepLKNet模块的具体实现。其中重点描述了GRNwithNHWC、NCHWtoNHWC等核心组件的实现细节,并提供了完整的模型结构配置代码。这些改进使得YOLOv13模型在保持原有架构优势的同时,获得了更强大的特征提取

FJN110的博客 2819

java:实现包含复选框的表格(附带源码)

java:实现包含复选框的表格(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1878

Yolov8-pose关键点检测:训练实战篇 | 手部关键点检测

yolo8-pose实战检测手部关键点并优化。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 3395

java jtable 复选框_java-具有可编辑复选框的JTable

下面的代码是我的项目类之一.当我单击“查找”按钮时,它将使用JTable生成框架,一些数据将动态加载到表中.表的最后一列必须是带事件的复选框.我尝试了此代码的复选框(从另一个项目..它不起作用)DefaultTableModel dtm = new DefaultTableModel(data, colName){public Class getColumnClass(int c) {retu...

weixin_34928052的博客 350

第一章 千牛实时获取消息之ws服务端搭建

以上就是今天要讲的内容,本文仅仅简单介绍了ws服务端的搭建,后面将介绍ws客户端的搭建和配合ws服务器的测试。

不想说话的树专栏 1827

【数字IC验证快速入门】26、SystemVerilog项目实践之AHB-SRAMC(6)(AHB-SRAMC SVTB Overview)

导读:作者有幸在中国电子信息领域的排头兵院校“电子科技大学”攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思、清华紫光、联发科技等业界顶尖集成电路相关企业面授课程,对数字IC验证有了一些知识积累和学习心得。为帮助想入门前端IC验证的朋友,思忱一二后,特开此专栏,以期花最短的时间,走最少的弯路,学最多的IC验证技术知识。 文章目录一、内容概述二、AHB-SRAMC 验证计划 一、内容概述 AHB-SRAMC 验证计划 AHB-SRAMC 验证平台的架构图 AHB-SRAMC 验证平台的代.

悟已往之不谏 知来者之可追 2650

JTable加入JCheckBox方法

对于JTable而言,当你设置列属性为Boolean时,其默认显示出复选框外观,但是如果没有进行设置,是无法实现像 JCheckBox/CheckBox 的勾选功能。   当我在实现这一块的时候,刚开始也不懂,查阅网上资料,都基本只给出代码,而没讲为什么(这倒没什么,关键是代码一大坨,看都看晕),而且更为蛋疼的是,其实现较为复杂(比较主流的是设置CellEditora、CellRend

小北 6669

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java jtable 复选框_java – 如何在JTable中呈现一个复选框?

这是我渲染JTable并更改行颜色的代码,但它没有在第6列中显示复选框,只显示字符串(true,false).你能提供解决方案吗?提前致谢.public class JLabelRenderer extends JLabel implements TableCellRenderer{private MyJTable myTable;/*** Creates a Custom JLabel Cell...

weixin_39628268的博客 286

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java Swing JTable 表格【16:复选框JCheckBox作为表格元素】

上一篇介绍了组合列表框作为表格元素的例子,这篇根据上篇的DefaultCellEditor的构造方法,再来练习一个复选框的例子这个例子首先在创建数据时,复选框那一列的值默认值一个给得是false,一个给的是true,所以界面打开的时候会一个是选中,一个是没选中,如图: 代码如下: package com.acconsys.swing.chapter14;import java.awt.Borde

爱的叹息的专栏 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

swing实现表格复选框表头

swing中表格是个较为重要的组件,如果我们想自定义表头,该如何实现呢。本文介绍了如何实现一个复选框表头并实现全选功能,代码详细

qq_42864422的博客 1322

java awt jtable 复选框_如何在JTABLE swing中添加复选框

弑天下1)JTable默认使用内置的布尔TableCellRenderers和TableCellEditor知道JCheckbox,然后有一些反效果声明,2)AbstractTableModel应该是有用的,其中JTable需要减少/限制/更改嵌套和继承默认情况下实现的方法DefaultTableModel,3)考虑使用DefaultTableModel,(如果你不确定如何工作)代替Abstra...

weixin_36237278的博客 1040

带CheckBox的JTable实现

在用户界面的实现上,java的IDE远不如VS的IDE工具,尤其控件资源更是匮乏。标准的eclipse是没有可视化的界面编辑器的,需要借助于可视化Frame插件,才能方便的实现界面的设计。近来,本人有兴趣研究了JTable中添加CheckBox的实现,希望能够给大家带来帮助。 如果有需要自定义组件代码的同学,请到如下URL下载。 自定义组件代码地址:http://download.csdn.n

AttaGain的专栏 1万+

java jtable 复选框_java中在jtable中加入了复选框,如何重置复选框

好的,下午给一个demo刚才也有些看走眼了,以为是你要放入复选框现在看来你已经功能放入了,但不能控制,也看了你的补充,是用第一种方法实现的。可以参考一下下边的代码。for (int row = 0; row < table.getRowCount(); row++) {JCheckBox check = ((JCheckBox) table.getValueAt(row, column));...

weixin_31889919的博客 381

(Swing) 在JTable中实现复选框

最近要采用swing写程序遇到了这个问题,在网上搜了一些方法,经过多次努力,终于实现,将调试通过的代码拿出来分享,希望有用啊 主要由三个文件:CheckBoxRenderer.java  CheckButtonEditor.java  CheckboxTable.java  1、CheckBoxRenderer.java  import java.awt.Compo

wzh32的专栏 3745

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

展开全部java swing中在jTable中添加多个复选框的方32313133353236313431303231363533e59b9ee7ad9431333337616566式如下:importjava.awt.Component;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importja...

weixin_35714534的博客 1565
上一篇: java.lang.IllegalArgumentException: adding a window to a container
下一篇: 以XML的方式读取Excel文件数据
levelnini
博客等级 码龄14年 45粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值