jtabel 遍历_使用抽象表模型获取JTable中选定的行

在下面的示例中,TableModel更新Set checked在执行setValueAt()..相邻模型JList侦听表的模型并显示当前选定的行号。该示例假定所选行数与行数相比较小。注意使用TreeSet,其迭代器保留了元素的自然顺序。import java.awt.Dimension;import java.awt.EventQueue;import java.awt.GridLayout;import java.util.ArrayList;import java.util.List;

import java.util.Set;import java.util.TreeSet;import javax.swing.BorderFactory;import javax.swing.DefaultListModel;

import javax.swing.JFrame;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JScrollPane;

import javax.swing.JTable;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;

import javax.swing.table.AbstractTableModel;/** @see http://stackoverflow.com/a/13919878/230513 */public class CheckTable {

private static final CheckModel model = new CheckModel(5000);

private static final JTable table = new JTable(model) {

@Override

public Dimension getPreferredScrollableViewportSize() {

return new Dimension(150, 300);

}

};

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

JFrame f = new JFrame("CheckTable");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setLayout(new GridLayout(1, 0));

f.add(new JScrollPane(table));

f.add(new DisplayPanel(model));

f.pack();

f.setLocationRelativeTo(null);

f.setVisible(true);

}

});

}

private static class DisplayPanel extends JPanel {

private DefaultListModel dlm = new DefaultListModel();

private JList list = new JList(dlm);

public DisplayPanel(final CheckModel model) {

super(new GridLayout());

this.setBorder(BorderFactory.createTitledBorder("Checked"));

this.add(new JScrollPane(list));

model.addTableModelListener(new TableModelListener() {

@Override

public void tableChanged(TableModelEvent e) {

dlm.removeAllElements();

for (Integer integer : model.checked) {

dlm.addElement(integer);

}

}

});

}

}

private static class CheckModel extends AbstractTableModel {

private final int rows;

private List rowList;

private Set checked = new TreeSet();

public CheckModel(int rows) {

this.rows = rows;

rowList = new ArrayList(rows);

for (int i = 0; i 

rowList.add(Boolean.FALSE);

}

}

@Override

public int getRowCount() {

return rows;

}

@Override

public int getColumnCount() {

return 2;

}

@Override

public String getColumnName(int col) {

return "Column " + col;

}

@Override

public Object getValueAt(int row, int col) {

if (col == 0) {

return row;

} else {

return rowList.get(row);

}

}

@Override

public void setValueAt(Object aValue, int row, int col) {

boolean b = (Boolean) aValue;

rowList.set(row, b);

if (b) {

checked.add(row);

} else {

checked.remove(row);

}

fireTableRowsUpdated(row, row);

}

@Override

public Class> getColumnClass(int col) {

return getValueAt(0, col).getClass();

}

@Override

public boolean isCellEditable(int row, int col) {

return col == 1;

}

}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

neo4j cypher_优化Neo4j Cypher查询

neo4j cypher上周,我花了很多时间来尝试优化大约20个使用实时系统数据执行的灾难性的Cypher查询(36866ms至155575ms)。 经过一番尝试和错误,以及来自Michael的大量投入,我能够大致确定对查询进行哪些操作才能使它们性能…

Mac--PHP已经开启gd扩展验证码不显示

错误显示:Call to undefined function imagettftext() 原因: mac系统中自带的php的gd库中,缺少对freetype的支持,导致图片无法显示。 解决: 1 下载freetype,安装即可 下载地址:https://download…

cprintdialog预览_怎样用CPrintDialog来实现打印功能

把以下程序段加入你的程序把dc1当作Device Content.就任你打印了.注意别画错地方.自己换页.更绝的是可调用窗口的OnPrint或OnDraw成员函数直接打印.不用你去做行距多少啦!但别忘换页.// 打印// 建立打印对话框对象CPrintDialoghttp://www.gaodaima.com/?p65323怎样用CPrintDia…

容器中Java RAM的使用:不会丢失内存的5大技巧

在本文中,我们希望分享Java内存管理的细节和容器内部的弹性,这些细节乍一看并不明显。 在下面,您将找到要注意的问题列表以及即将发布的JDK版本中的重要更新,以及针对核心痛点的现有解决方法。 我们收集了5个最有趣,最…

G1垃圾收集器设计目标与改良手段【纯理论】

在之前已经详细对CMS垃圾回收器进行了学习,今天准备要学习另一个全新的垃圾收集器---G1(Garbage First Collector 垃圾优先的收集器),说是一种全新的,其实G1垃圾收集器已经出现了N多年了,只是从发展到成熟是…

centos7安装es mysql_Centos7 安装MySQL详细步骤

Centos7 安装MySQL详细步骤首先在虚拟机中安装一个Centos7(VM虚拟机安装Centos7)1.1 MySQL安装1.1.1 下载wget命令yum -y install wget11.1.2 在线下载mysql安装包wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm11.1.3 安装MySQLrpm -ivh mysql57…

Mac入门--通过homebrew下载过慢问题

使用国内的镜像替换homebrew镜像,对镜像进行加速源 原先我们执行brew命令安装的时候,跟3个仓库地址有关 1 brew.git 2 homebrew-core.git 3 homebrew-bottles 把三个仓库地址全部替换成国内Alibaba提供的地址 1 替换/还原brew.git仓库地址 # 替换成阿里…

在卷积层的运用_Conv 卷积层

onv 卷积层一.why CNN for image ? 1.Some Patterns are much smaller than the whole image.一些模式比起整张图片来说更小,即寻找模式不用看完整的图像。2.The same patterns appear in different regions.同一个模式可能会出现在不同的区域。3.Subsamping the p…

idea 编写javafx_用JavaFX编写图块引擎

idea 编写javafx随着JavaFX嵌入式版本的问世,我们的框架对于游戏开发变得越来越有趣,因为我们现在可以瞄准平板电脑和智能手机等小型消费类设备。 因此,我决定对JavaFX进行更多的游戏编写实验。 这次,我想使用Canvas对渲染进行更多…

C#/.Net操作MongoDBHelper类

先 NuGet两个程序集 1:MongoDB.Driver、 2:MongoDB.Bson namespace ConsoleApp1{ /// <summary> /// MongoDb帮助类 /// </summary> /// <summary> /// MongoDb帮助类 /// </summary> public class DB { private static readonly string connStr &q…

echo回声不能用了_已懂得用电子分频器,为何不继续加个效果器让音响效果更好?...

效果器是一种提供各种声场效果&#xff0c;并对声音信号在时间和频率等多方面多方位进行加工处理以产生特殊音响效果的周边设备&#xff0c;它广泛使用在电台、电视台的节目制作上。然而要充分发挥效果器的作用&#xff0c;使其获得满意的效果&#xff0c;还必须掌握正确的连接…

Spring Web-Flux – Cassandra后端的功能样式

在上一篇文章中&#xff0c;我介绍了Spring Web-Flux的基础知识&#xff0c;它表示Spring框架的Web层中的响应式支持。 我已经展示了使用Spring Data Cassandra并在Spring Web Layers中使用传统注释支持的端到端示例&#xff0c; 大致如下&#xff1a; ... import org.spring…

Mac入门--安装PHP扩展redis,swoole

1 php7以下可以通过pecl安装PHP扩展 安装redis扩展 pecl install redis 安装swoole扩展 pecl install swoole2 PHP7以上通过源码编译安装扩展 2.1 扩展安装包在官网上查找链接地址&#xff1a;http://pecl.php.net 2.2.1 在官网上直接下载上传的服务器上解压 2.2.2 通过wget下载…

商品pid是什么意思_0基础搞懂自动驾驶传统算法与深度学习的鸿沟-PID控制算法与MLP优化方法...

0基础搞懂自动驾驶传统算法与深度学习的鸿沟这个专题核心是要思考如何让rule-base的自动驾驶算法逐步提升为data-driven的算法&#xff0c;从而尽可能的提升软件的泛化性。数据驱动的逻辑代替控制&#xff0c;规划&#xff0c;定位&#xff0c;融合&#xff0c;感知以及替换整个…

1000以内完数c语言程序_C语言经典面试题目及答案详解(二)

接着上次来说&#xff0c;C语言经典面试题目及答案详解&#xff08;一&#xff09;当中大部分是一些概念和理解的东西 &#xff0c;今天说一说实践操作&#xff0c;有关c的经典程序。1、输出9*9口诀。共9行9列&#xff0c;i控制行&#xff0c;j控制列。#include "stdio.h&…

「题解」:[组合数学]:Perm 排列计数

题干&#xff1a; Description称一个1,2,…,N的排列P1,P2…,Pn是Magic的&#xff0c;当且仅当2<i<N时&#xff0c;Pi>Pi/2. 计算1&#xff0c;2&#xff0c;…N的排列中有多少是Magic的&#xff0c;答案可能很大&#xff0c;只能输出模P以后的值Input输入文件的第一行…

最受欢迎的java技术_最受欢迎的Java环境

最受欢迎的java技术该职位将是即将发布的系列文章中的第一篇。 我们从所使用的环境开始&#xff1a;如果您感兴趣的是最受欢迎的JVM供应商或JVM版本&#xff0c;那么32bit是比64bit更流行的体系结构&#xff0c;还是Windows 8比Windows XP更流行的体系结构-这些都将在我们的文章…

DT-06 For MQTT

感谢关注深圳四博智联科技有限公司产品&#xff01;我公司提供完整的WiFi信号强度采集方案&#xff0c;包括WiFi信号采集、设备远程管理平台、智能终端应用等。 Doit_MQTT透传固件基于乐鑫ESP_IOT_SDK使用C编写&#xff0c;代码执行效率高。经过多个版本迭代&#xff0c;可靠性…

@async 没有异步_扒一扒VueCLI3.0中Axios异步请求同步化

前台经常会遇到请求同步和异步的问题&#xff0c;今天咱们来聊一聊vue中同步请求和异步请求那些事儿。说到接口的请求同步和异步问题&#xff0c;最早接触Ajax中就存在&#xff0c;Ajax传递的参数有一个async&#xff0c;默认情况下是false&#xff0c;也就是异步传输的&#x…

Java Platform Module系统中的可选依赖项

Java平台模块系统&#xff08;JPMS&#xff09;对依赖项有很强的见解&#xff1a;默认情况下&#xff0c;需要&#xff08;必须可访问&#xff09;它们&#xff0c;然后在编译时和运行时都将它们存在。 但是&#xff0c;这不适用于可选的依赖项&#xff0c;因为代码是针对运行时…