1

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

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

另外,谁能告诉我为什么这个片段不能以预期的方式工作?

4

1 回答 1

2

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

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

我没有试过这个,但我认为......

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

可能更清洁...?

于 2013-09-16T08:33:51.277 回答