在插入位置下方显示JDialog

时间:2013-09-16 08:30:34

标签: java swing jtextarea jdialog

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

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

另外,任何人都可以告诉我为什么这个片段没有按照预期的方式工作?

1 个答案:

答案 0 :(得分: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);

可能更清洁......?