我想在我的计划JDialog
中的当前插入符号位置下方显示JTextArea
。我尝试使用modelToView()
来获取插入位置,但是当我以这种方式使用setLocation()
JDialog
方法时,我无法获得所需的位置。
Rectangle r=jTextArea.modelToView(jTextArea.getCaretPosition());
jDialog.setLocation(r.x,r.y+jTextArea.getFontMetrics(jTextArea.getFont()).getHeight());
另外,任何人都可以告诉我为什么这个片段没有按照预期的方式工作?
答案 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);
可能更清洁......?