有没有什么好书或网站可以创建一个JTable ?我想让一列可编辑。我想实际放一个继承的JCheckBox组件(我们在此处创建)到表列之一中,而不是仅将表放入 JCheckBox在基于它是可编辑的 boolean field 。
我有 JFC Swing Tutorial Second Edition书,但我只是想知道是否还有其他示例可以查看并学习如何更好地处理表格。这本书似乎只是将java'trail'放到网上并放在书中。
不过,我正在重新阅读这些内容,只是好奇是否有人找到了可能有帮助的内容。
最佳答案
要使列可编辑,您必须覆盖 isCellEditable TableModel 中的方法.创建 TableModel如果您继承 AbstractTableModel 则相当容易除了最简单的 JTable 之外,我会向所有人推荐它s。
但是,调整 TableModel只是您需要做的一部分。在 JTable 中实际获取自定义组件,您需要设置自定义单元格渲染器。要使用交互式自定义组件,您需要设置自定义单元格编辑器。在某些情况下,为此使用默认类的稍微修改版本就足够了。
编辑
如果您已经有一个自定义组件,可以使用委托(delegate)轻松完成:创建一个实现 TableCellEditor 的新类,并返回 getCellEditorComponent 中组件的新实例方法。此方法的参数包括当前值以及单元格坐标、返回表格的链接以及单元格是否被选中。TableCellEditor还有一个方法,当用户提交对单元格内容的更改(您可以在其中验证用户输入并调整模型)或取消编辑时调用。请务必调用stopEditing()如果您曾经以编程方式中止编辑,则编辑器上的方法,否则编辑器组件将保留在屏幕上——这曾经花了我 2 个小时来调试。
请注意,在 JTable 内编辑器和只有编辑器接收事件!可以使用渲染器来显示按钮。但是要获得一个功能正常的按钮,您需要使用正确的 EventListeners 来实现一个编辑器。挂号的。在渲染器上注册监听器什么都不做。
渲染器
对于您在问题中描述的内容,实现渲染器并不是绝对必要的,但您通常最终还是会这样做,即使只是进行微小的修改。与编辑器不同,渲染器对速度至关重要。 getTableCellRendererComponent为表格中的每个单元格调用一次渲染器!渲染器返回的组件仅用于绘制单元格,而不用于交互,因此可以“重用”用于下一个单元格。换句话说,您应该在渲染器中调整组件(例如,使用 setText(...) 或 setFont(...) 如果它是 TextComponent ),您不应该实例化一个新组件——这是削弱性能的一种简单方法。
注意事项
请注意,要使渲染器和编辑器正常工作,您需要告诉 JTable何时使用某个渲染器/编辑器。基本上有两种方法可以做到这一点。您可以使用相应的 JTable 为特定类型设置默认单元格渲染器/编辑器。方法。对于这种工作方式,您的 TableModel需要在 getColumnClass(...) 中准确返回此类型方法!默认的表模型不会为你做这件事,它总是返回 Object.class .我敢肯定,这已经难倒了很多人。
设置编辑器/渲染器的另一种方法是在列本身上显式设置它,即通过获取 TableColumn通过 getTableColumn(...) JTable的方法.这要复杂得多,但是,它也是为单个类拥有两个不同渲染器/编辑器的唯一方法。例如。您的模型可能有两列 String 类,它们以完全不同的方式呈现,可能曾经使用 JLabel/DefaultRenderer另一个使用 JButton访问更精细的编辑器。JTable它的自定义渲染器和编辑器非常通用,但它也有很多需要注意的地方,并且有很多事情要做错。祝你好运!
How to Use Tables在 The Swing Tutorial对于任何自定义 JTables 的人来说都是必读的。特别是阅读和重读Concepts: Editors and Renderers因为它通常需要一段时间才能“点击”。关于自定义渲染器和编辑器的示例也非常值得。
关于java - 可编辑 JTable 教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/85046/
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模