首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在实现DnD时让jtable传输处理器高亮显示一行?

在实现DnD(拖放)时,要让jtable(Java中的表格控件)传输处理器(TransferHandler)高亮显示一行,可以按照以下步骤进行:

  1. 创建一个自定义的TransferHandler类,并重写其中的exportAsDrag()方法。在该方法中,获取拖放源组件的选定行,并将其高亮显示。
  2. 在重写的exportAsDrag()方法中,可以使用JTable的getSelectedRow()方法获取选定的行索引。然后,可以使用JTable的getCellRect()方法获取选定行的矩形区域。
  3. 创建一个继承自javax.swing.TransferHandler类的子类,并重写其中的canImport()方法和createTransferable()方法。这两个方法是拖放操作的关键。
  4. 在canImport()方法中,根据需要检查拖放源和目标是否允许拖放操作。
  5. 在createTransferable()方法中,创建一个Transferable对象,用于传输拖放数据。在该方法中,可以获取选定行的数据,并将其封装到Transferable对象中。
  6. 设置JTable的TransferHandler为自定义的TransferHandler类。

下面是示例代码,用于实现上述功能:

代码语言:txt
复制
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.DataFlavor;

public class CustomTransferHandler extends TransferHandler {
    @Override
    public int getSourceActions(JComponent c) {
        return TransferHandler.COPY;
    }

    @Override
    protected Transferable createTransferable(JComponent c) {
        JTable table = (JTable) c;
        int selectedRow = table.getSelectedRow();
        String rowData = (String) table.getValueAt(selectedRow, 0);

        return new StringSelection(rowData);
    }

    @Override
    protected void exportDone(JComponent source, Transferable data, int action) {
        if (action == TransferHandler.MOVE) {
            JTable table = (JTable) source;
            int selectedRow = table.getSelectedRow();
            table.removeRowSelectionInterval(selectedRow, selectedRow);
        }
    }

    @Override
    public boolean canImport(TransferSupport support) {
        return false;
    }

    @Override
    public boolean importData(TransferSupport support) {
        return false;
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Drag and Drop Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        String[] columnNames = {"Column 1", "Column 2"};
        Object[][] data = {{"Row 1", "Data 1"}, {"Row 2", "Data 2"}, {"Row 3", "Data 3"}};

        JTable table = new JTable(data, columnNames);
        table.setDragEnabled(true);
        table.setTransferHandler(new CustomTransferHandler());

        JScrollPane scrollPane = new JScrollPane(table);
        frame.getContentPane().add(scrollPane);

        frame.setSize(300, 200);
        frame.setVisible(true);
    }
}

在以上代码中,创建了一个自定义的TransferHandler类CustomTransferHandler,并在其中重写了相关的方法。main()方法创建了一个简单的JTable,并将其设置为可拖放,并将自定义的TransferHandler设置为其TransferHandler。

注意:以上代码仅用于演示如何实现DnD时让jtable传输处理器高亮显示一行,实际使用时可能需要根据具体需求进行适当修改。

参考链接:JTable官方文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

20个惊艳的React组件库,每一个都值得收藏(上)

Monaco Editor的特点 语法高亮:支持多种编程语言的语法高亮代码更易于阅读和理解。 代码补全:智能的代码补全功能大大提高编码效率,减少打字量。...改善用户体验:通过在页面加载显示进度条,增加了用户的等待反馈,有助于提升整体的用户体验。...使用场景 React NProgress特别适合于需要加载资源或数据的Web应用,例如: 单页应用(SPA),在路由切换显示进度条。...加载远程数据的应用,新闻站点或电子商务平台,在数据请求过程中显示进度。 文件上传或下载界面,提供进度反馈。...易于使用:通过简单的组件封装,可以轻松地在React组件中引入和使用,实现代码的高亮显示

1.2K12

java swing 添加 jcheckbox复选框

那么关于设置窗体的显示就不再赘述了,值得注意的是窗体的布局必须设置。 小贴士:使用setLayout设置布局,参数传递null; 讨论一下怎样在窗体的表格中显示复选框。即实现如下效果: ?...new MyTableModel:TableModel(){}也就是说大家可以想象成(new TableModel(){})是在声明一个匿名对象,它属于一个不具名的类(MyTableModel),该类实现了...在详细说明之前先解释一下JTable显示原理:       首先是数据来源,您使用JTable的构造方法,大部分重载中参数即包含了数据,比如JTable(VectorrowData, Vector columnNames...其次是表格样式,表格将数据和如何显示数据(比如列数量、列名称、是否可编辑)保存在其数据模版中,该模版实现自接口TableModel。   最后,表格(每一个单元格)可以设置渲染效果。...112 110 // 在多选是需要按住Ctrl键或者鼠标按住拖过连续的需要选中的行,应该给用户说明 113 111 // 第一种方法是被推荐的,因为它具有选中的高亮显示

3.3K00
  • 基于 HTML5 的工业互联网云平台监控机房 U 位 顶

    设备上架、下架与迁移,自动变更和实时记录,(用户评价):部署工业互联网云平台监控机房 U 位后节省了 99% 的登记变更记录的时间,而且实现了变更后数据 100% 的准确,在这之前是难以想象的,真正实现运维管理最后的工作...https://hightopo.com/demo/rack-builder/index.html 代码生成 场景搭建 整个 Demo 由最左侧的树,中间部分的列表以及右边的拓扑图整体构成,为了整个布局干净一点...listForm.setVPadding(2);// 设置表单顶部和顶部与组件内容的间距 listForm.setHPadding(4);// 设置表单左边和右边与组件内容的间距 listForm.addRow([// 添加一行组件...rack.a('treeNode', treeNode); } self.gv.fitContent(1);// 添加元素之后,所有的图元显示在界面上...,除了本例中展示的机房 U 位监控,拓扑图展示,数据的传输意外,其他的工业领域,三维建模的展示以及能源和通讯领域中,甚至轨道交通,医疗领域此工业互联网云平台都可应用。

    1.5K30

    第六章·Linux文件管理-VIM编辑

    vim是学习Linux最重要的命令之一 ---- vi与vim有什么区别 vi不显示高亮颜色语法 vim显示高亮颜色语法。 其他功能没有什么区别。...当进入编辑模式,会在屏幕的最下一行出现“INSERT的字样。 从编辑模式回到命令模式只需要按键盘左上方的 ESC 键即可。...P(大写) //粘贴至当前光标上一行 删除剪切 dd //删除当前光标所在的行 Ndd|dNd //删除当前光标所在的行以及往下的...#设置当行之间交错使用4个空格 set?shiftwidth=4? #设置在编辑过程中,于右下角显示光标位置的状态行 set?ruler? #设置增量搜索,这样的查询比较smart set?...#高亮显示匹配的括号 set?showmatch? #匹配括号高亮时间(单位为?1/10?s) set?matchtime=10? #在搜索的时候忽略大小写 set?ignorecase?

    1.3K20

    javaweb-springMVC-54

    使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发,可以选择使用Spring的 SpringMVC框架或集成其他MVC开发框架,Struts1(现在一般不用),Struts2...写好以后还需要配置,以便服务器知道 需要把自己写的类也给注册一下,这样就包括系统的和自己的 spring.xml ? ? 处理器,适配器生效,同时也类型转换器生效 ? ?...F2 或Shift+F2 高亮错误或警告快速定位 代码标签输入完成后,按Tab,生成代码。 选中文本,按Ctrl+Shift+F7 ,高亮显示所有该文本,按Esc高亮消失。...Ctrl+W 选中代码,连续按会有其他效果 选中文本,按Alt+F3 ,逐个往下查找相同文本,并高亮显示。...Ctrl+Up/Down 光标跳转到第一行或最后一行下 Ctrl+B 快速打开光标处的类或方法 Intellij IDEA最常用快捷键 1.Ctrl+E,可以显示最近编辑的文件列表 2.Shift+Click

    59020

    基于 HTML5 Canvas 的工控机柜 U 位动态管理

    https://hightopo.com/demo/rack-builder/index.html 代码生成 场景搭建 整个 Demo 由最左侧的树,中间部分的列表以及右边的拓扑图整体构成,为了整个布局干净一点...listForm.setVPadding(2);// 设置表单顶部和顶部与组件内容的间距 listForm.setHPadding(4);// 设置表单左边和右边与组件内容的间距 listForm.addRow([// 添加一行组件...action: function(button, e) {// action为回调函数,当此按钮被当点击,回调函数会执行 var...rack.a('treeNode', treeNode); } self.gv.fitContent(1);// 添加元素之后,所有的图元显示在界面上...实现了添加和编辑机柜的两个功能,删除机柜的功能实现上非常容易,只要将节点从拓扑图和树上移除即可: handleRemoveRack: function(){// 在拓扑图上删除机柜,并删除树上此机柜对应的节点

    2.4K40

    常用的Markdown格式的语法规则

    Markdown的语法简单直观,目的是为了非技术人员也能快速上手,用简单的符号和指令来添加标题、列表、链接、图片等元素。...为了实现兼容性,通常建议使用星号将单词或短语的中间部分加粗并以斜体显示,以示重要。...,并且提供代码语言,如果代码语言异常,或主流的代码高亮插件无法识别会导致其无法高亮显示如果使用的是不能高亮的代码语言,为了高亮显示可以试着将代码语言标注为Javascript 并在别的地方提示读者代码语言是什么...cloud.tencent.com/developer腾讯云开发者社区Link TextULR:https://cloud.tencent.com/developer图片通常由以下三元素组成图片文本 是当图片无法显示显示的文字描述...在图片能显示,通常位于图片下面居中位置图片链接 也可以说是 图片路径 通常可以是相对路径或者绝对URL。在本地文件系统中使用相对路径,路径应相对于Markdown文件的位置。

    19131

    《iOS Human Interface Guidelines》——Table View表视图

    一个表视图: 在可以分章节或分组的行中显示数据 提供用户添加或移除行、选择多个行、查看关于一行条目的更多信息或显示另一个表视图的控件 iOS定义了两种风格的表视图: 简单风格。...在两种风格中,表行会在用户点击选中简短地高亮。如果一行的选择导致导航到一个新的界面,选中的行会高亮并且伴随着新的界面滑动进来。...当用户导航回前一个界面,之前选中的行会再次简短地高亮来提醒用户之前的选择(它不会持续高亮)。 iOS包含一些可以扩展表视图功能的表视图元素。除非特别注明,这些元素只适合用在表视图中。...iOS定义了四中表单元格风格,实现了简单和分组风格下表中行的大部分常规布局。每种单元格风格都最好地适应了不同类型信息的显示。...当你使用表视图遵循下面的指南: 当用户选择列表条目永远要提供反馈。用户期待当他们点击列表条目表中的行能简短地高亮一下。

    2.4K20

    值得练手的JavaGUI项目——色彩调节器的实现【附完整源码】

    蓝三种滑块、然后当我们拖动滑块使三种颜色的RGB值发生改变,利用ChangeListener对事件进行监听,获取到三种颜色对应的RGB值,并且在窗体中将对应得到的颜色显示出来即可。...首先是设置调色器窗体和字体,并且根据我们的需要将窗体进行简单的面板布局,在这里我们可以将窗体划分为一行三列,即:第一列摆放三种滑块、第二列显示三种颜色的RGB值、第三列显示当前得到的颜色。...,代表红色RGB值的滑块,最小值是0,最大值是255,当程序运行时滑块默认处于的位置是255。...//设置颜色显示区域 colorLB = new JTable(); colorLB.setBackground(Color.red); add(colorLB); 现在调色器中的控件基本上都设置已经完成了...//将控件设置为公有权限 public JSlider js_red,js_green,js_blue; //定义滑块控件 public JTable colorLB; //定义颜色显示的标签 public

    2.4K20

    这可能是最全最实用的Vim操作集合

    2 Vim 基础 Vim 是一个纯命令操作的编辑器,它拥有不同的模式,你可以认为是不同的状态,通过在不同的模式下输入不同的命令可以实现各种文本操作的功能,包括我们对文本常用的操作复制、黏贴、删除、新增...,就可以实现选中行批量执行第一行的添加分号命令了 方式二(推荐): 首先我们将光标定位到需要操作的代码行开始的第一行 然后将光标定位到第二行,按 ESC 键,再按大写 V 键进入可视模式,选中我们需要批量操作的行...然后按 : 进入命令模式,输入 normal A;,即 :'normal A;,就可以实现选中行批量添加分号命令了 “注:' 代表高亮选区的范围。...7.4 编辑二进制文件 对于一些二进制文件, 比如网络传输中我们要对接收到的数据进行字节分析,又比如分析码流文件 h264 文件等,都需要查看二进制内容,vim 也提供二进制文件的查看和编辑功能: #...-8 set helplang=cn " 侦测文件类型 filetype on " 高亮显示匹配的括号 set showmatch " 为C程序提供自动缩进 set smartindent "

    2.1K20

    教你几招,你vim编辑器变得友善起来~

    简单的来说, vi 是老式的字处理器,虽然功能还算齐全,但是现在差不多完全被 vim编辑器给取代了,则可以说是程序开发者的一项很好用的工具,只要是用Linux开发,vim是必备神器。...在这个文件中,会有这么一句: syntax on 意思是语法高亮,如果您的被注释掉了,请“它出来”。 请在您的VIM的最后一行,输入他们,可以您的VIM变得更漂亮、舒服。...set nu // 在左侧行号 set tabstop //tab 长度设置为 4 set nobackup //覆盖文件不备份 set cursorline...//突出显示当前行 set ruler //在右下角显示光标位置的状态行 set autoindent //自动缩进 ?...配置完之后你的vim编辑器界面就变成,下面这个界面了,能看到行号、代码高亮,而且会突出显示当前行........ 比一开始的那个初始界面要友善很多。 ? 如果你觉得还挺实用的,就赶紧get起来吧~

    35730

    Linux命令(34)——vim命令

    在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行显示一个“:”作为末行模式的提示符,等待用户输入命令。...4.3vim读写文件编码转换过程 (1)读文件 vim打开文件,需要将磁盘文件内容载入缓存,并将缓存中的字符转为换终端编码,通过网络传输的方式,传输到终端进行显示。...如果想在每一行执行相同的命令,在 vim 里可以用 :g 实现。一般的语法是: :g/pattern/cmd 它表示在匹配 /pattern/ 这个正则表达式的行上执行 cmd 命令(也称冒号命令)。...因为任何一行都有行首,你的要求就很容易实现了: :g/^/norm 3o norm这个命令的意思是,把后面的参数看成是在普通模式下的按键,即命令模式下的按键。...(5)vim中高亮显示选中的单词 将光标移到需要高亮显示的单词上,在命令模式下输入gd,那么就可以将当前的单词在当前文本中全部高亮显示,如下图所示,高亮显示dwBeInvitedUinLen。 ?

    3.4K20

    热点技术有奖征文|最新开源拖拽组件引爆前端圈 ;PHP 排名跌至历史最低?

    应用实践:介绍如何在实际项目中、工作场景中使用Pragmatic Drag and Drop解决特定的问题,分析成功案例和最佳实践。...拖拽库比较:对比Pragmatic Drag and Drop与其他流行的拖拽库(react-beautiful-dnd、react-dnd等)。分析各自的优缺点和适用场景。...创新探索:使用Pragmatic Drag and Drop进行数据传输、状态更新等,分享与其他前端框架(React、Vue、Angular)集成的高级技巧。...性能优化和编译检查。活动时间投稿时间:2024 年 4 月 29 日 12:00 ~ 2024 年 5 月 13 日 23:59 为期两周。...获奖作者名单公布经技术老师从创新性、实用性、可借鉴性等这几个维度的综合评分,得出获奖作者名单如下:【热门技术先锋奖】1名获奖文章用户UID用户昵称React | 借助Pragmatic Drag and Drop实现高性能拖拽

    1.2K51

    Vim 太难?试试这款现代直观 Linux文本编辑器

    但是,某些编辑器( Vi 或 Vim)的学习曲线和键绑定对于初学者来说可能很难掌握。这是一个更简单的选择:Micro 文本编辑器。...尽管 Vim 值得学习和掌握,但对于初学者来说可能会人不知所措。Nano 相对简单易用,但仍不及 Micro 的简单性。以保存文件为例。...颜色和语法高亮 Micro 支持超过 130 种编程语言的语法高亮显示,包括 JavaScript、Python、C++ 等流行语言。除此之外,您还可以从七种可用的默认配色方案中选择您的主题。...当您想将编辑器分成两半时,这尤其有用,一侧是代码,另一侧是 shell 的输出显示。 如何在 Linux 上安装 Micro 安装 Micro 编辑器简单明了。...这是一个很好的工具,可以您熟悉终端并在使用过程中获得更高效的体验。

    1.5K10

    IntelliJ IDEA 2023.2新特性详解第二弹!

    5.3 return 语句的内联断点 IDEA 提供了对直接在 return 语句处设置断点的改进支持,类似已在 lambda 表达式中实现的设置方式。...区块将被分为单独的行,所选行将被高亮显示。 可使用复选框或上下文菜单在选区中添加或排除行。...8.11 Spring 配置 Bean 不再需要注解处理器 简化在 IDEA 中使用 Spring 的自定义配置 Bean 的用户体验。...当列表主要由字符串组成但包含布尔式文字,IntelliJ IDEA 将高亮显示此文字,指示潜在的不一致,并建议为其添加引号。...如果列表主要由布尔式文字(例如 true、false、off、on、yes 或 no)组成,则偏离此模式的任何文字都将被高亮显示为可能的错误,不过,在这种情况下不会建议具体的快速修复。

    91850

    安卓软件开发:使用Jetpack Compose实现高级NimNavBottomApp

    这个Demo,我实现了一个常见的底部导航栏App,包括多个页面切换、选中状态的高亮显示、徽章通知的显示等功能。...BottomNavItem.My.screenRoute) { MyScreen() } } } 例如,添加更多页面 你需要添加一个新的页面,例如 SettingsScreen,只需在 NavHost 中增加一行...三、技术难点 3.1 状态管理与导航同步 在多页面应用中,状态管理和导航同步一直是个难题,如何导航状态与页面展示保持一致,确保底部导航栏能够正确高亮选中的页面,这是需要特别注意的地方。...四、学习笔记 在这个Demo开发过程中,我掌握了如何在 Jetpack Compose 中处理复杂的状态管理,虽然学习成本较高,但掌握了 Compose 的核心思想,很方便开发。...特别是在处理 Badge、Scaffold 等 Material 3 组件,我发现它们的高度定制化和易用性,极大减少了样式定制的时间成本。深刻体会到 Jetpack Compose 有未来。

    246101

    船新 IDEA 2022.3 正式发布,新特性真香!

    用户体验 将工具窗口停靠到浮动编辑器选项卡的选项 为了您可以更轻松地安排工作空间并在多个显示器上与 IntelliJ IDEA 交互,我们实现了将工具窗口拖出主窗口并将其停靠到浮动编辑器选项卡的选项...我们还微调了确定显示哪些提示的算法,您可以看到与 IDE 体验和正在处理的项目最相关的提示。 改进了 Bookmarks(书签) 我们为 Bookmarks(书签)实现了多项 UI 改进。...我们还有许多 TASTy Reader 增强,提高了高亮显示的准确性并改进了编辑器性能。...我们还微调了 Groovy 的 build.gradle 文件中的代码高亮显示,并实现了一些新检查。IDE 现在会高亮显示已弃用的配置方法并建议适用替换选项。....dockerignore 文件类型支持 我们引入了对 .dockerignore 文件的全面支持,包括代码高亮显示和补全。从 IDE 构建镜像,这些文件会被纳入考量。

    3.2K20

    IntelliJ IDEA 2022.3 发布,全新 UI 太震撼了!

    用户体验 将工具窗口停靠到浮动编辑器选项卡的选项 为了您可以更轻松地安排工作空间并在多个显示器上与 IntelliJ IDEA 交互,我们实现了将工具窗口拖出主窗口并将其停靠到浮动编辑器选项卡的选项...我们还微调了确定显示哪些提示的算法,您可以看到与 IDE 体验和正在处理的项目最相关的提示。 改进了 Bookmarks(书签) 我们为 Bookmarks(书签)实现了多项 UI 改进。...我们还有许多 TASTy Reader 增强,提高了高亮显示的准确性并改进了编辑器性能。...我们还微调了 Groovy 的 build.gradle 文件中的代码高亮显示,并实现了一些新检查。IDE 现在会高亮显示已弃用的配置方法并建议适用替换选项。....dockerignore 文件类型支持 我们引入了对 .dockerignore 文件的全面支持,包括代码高亮显示和补全。从 IDE 构建镜像,这些文件会被纳入考量。

    6.2K40

    5K Star用Rust安全语言开发的日志高亮工具

    功能描述: Tailspin 通过逐行阅读日志文件,并针对每一行运行一系列正则表达式来工作。这些正则表达式可以识别你在日志文件中期望找到的模式,日期、数字、严重程度关键字等。...该工具在查找需要突出显示的项目并不做任何假设,因此不需要任何配置,高亮显示功能将在不同类型的日志文件中表现一致。...、IP 地址、UUID、URL 等内容 所有高亮组均可定制 易于与其他命令集成 使用 less 实现滚动、搜索和过滤功能 使用场景: Tailspin 对于需要查看和分析日志文件的开发人员和系统管理员特别有用...无需复杂的配置,用户可以直接使用该工具来查看各种日志,并通过高亮显示关键信息一目了然。...另外,由于Tailspin支持自定义高亮显示组,用户可以按照自己的需求灵活地设置高亮显示规则,从而更好地适应不同类型的日志文件。

    20510
    领券