java - 在插入符号位置下方显示 JDialog

标签 java swing jtextarea jdialog

我想在程序中 JTextArea 中当前插入符位置下方显示 JDialog。我尝试使用 modelToView() 来获取插入符号位置,但是当我以这种方式使用 JDialog 的 setLocation() 方法时,我我无法获得所需的位置。

Rectangle r=jTextArea.modelToView(jTextArea.getCaretPosition());
jDialog.setLocation(r.x,r.y+jTextArea.getFontMetrics(jTextArea.getFont()).getHeight());

另外,谁能告诉我为什么这个代码片段没有按预期的方式工作?

最佳答案

矩形可能是相对于父组件的。您需要将位置翻译到屏幕上

SwingUtilities.convertPointToScreen(r.getLocation(), jTextArea);
jDialog.setLocation(pos.x,pos.y+jTextArea.getFontMetrics(jTextArea.getFont()).getHeight());

我没有尝试过,但我认为......

jDialog.setLocation(pos.x,pos.y+r.height);

可能会更干净......?

关于java - 在插入符号位置下方显示 JDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18823565/

相关文章:

java - Android Freebase 查询 IOException

java - STS 中没有 Maven 的 Spring Boot 项目

java - 我的 JFrame 中什么也没有出现

java - 无法使 JTextArea 可滚动..!

java - 简单程序帮助 - 如何从数组列表中显示 JTextAreas 中的多行文本?

java - 如何在 JTextArea 上添加 JScrollPane?

java - Grails清理离开java进程

java - Java SE 上的 Websocket?

java拉绳直接图片

java - JSlider 在 10 秒后隐藏,就像在电视机中一样