java - 如何在 Java 中创建一个在您键入时将 URL 转换为超链接的 JTable

标签 java swing hyperlink jtable jtextpane

我需要一个具有多行单元格的 JTable,并将多个(在一个单元格中)URL 转换为可点击的超链接并支持基本样式操作(粗体、斜体、下划线),这意味着我可以在输入文本期间或之后编辑样式.我还需要它能够将样式化的单元格内容保存到数据库中。 实现这一目标的最简单方法是什么?

我已经尝试创建一个自定义单元格编辑器(并解决了多行问题),它使用 JTextPane 并向其添加了关键监听器,用于在释放“空格”字符时以及最后一个单词是否以“http://”开头时进行监听",将其从其文档中删除并再次将其添加为具有 href 属性和蓝色的样式文本。我还添加了监听鼠标点击超链接的监听器。这一切在编辑期间都有效,但是当单元格失去焦点时,所有文本都变得没有样式和黑色。可能是因为我使用了不同的渲染器和编辑器,但我也将关键监听器添加到渲染器。 在关闭和启动应用程序时,我在保存尤其是设置表格单元格值时也遇到了很大的问题。我应该继续尝试让它以这种方式工作,还是应该返回并采用不同的方法,例如将 JTextPane 的内容类型设置为“text/html”。如果我这样做,我真的不知道如何在您键入时将 URL 转换为超链接。

顺便说一句,编辑器扩展了 AbstractCellEdit,而渲染器扩展了 JTextPane。

我们将不胜感激。

最佳答案

  • 在您的方法中,您还需要一个自定义渲染器。一旦您停止编辑,渲染器就会接管工作,因此渲染器必须支持与您的编辑器相同的样式选项
  • 表格中的可点击超链接不会简单明了。渲染器组件不是 JTable 的一部分,它仅用作标记。因此,您附加到组件的所有常规事物,如 MouseListenerActionListenerFocusListener,都不会被触发,因为组件不是 Swing 层次结构的一部分。如果我没记错的话,SwingX 内置了对 JTable 超链接的支持,但不确定它们是否可以与样式化的 HTML 文档结合使用
  • 当您的编辑器扩展 JTextPane 时,使用 DocumentListener 而不是 KeyListener
  • 保存/加载基本上只是将您的 TableModel 转储到持久状态并返回。这看起来像是需求中最简单的部分

关于java - 如何在 Java 中创建一个在您键入时将 URL 转换为超链接的 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980677/

相关文章:

使用套接字上传Java文件,需要上传文件的百分比?

Java设计架构

url - Google 在搜索结果中显示的 URI 长度限制是多少

ruby-on-rails - Ruby on Rails - 不使用资源路由的路径变量

java - OS X 上 Windows 环境下的测试程序

Java 泛型树遍历

Java:使用drawArc绘制圆形螺旋

asp.net - 如何使图像的一部分成为可点击的链接

java - 我可以在文档签名文档中动态放置签名选项卡吗

java - 在 jframe 中读取已删除的面板