2013-09-16 2 views
1

Я хотел бы показать JDialog ниже текущей позиции каретки в JTextArea в моей программе. Я попытался использовать, modelToView(), чтобы получить позицию каретки, но когда я использую метод setLocation()JDialog таким образом, я не могу получить нужное место.Дисплей JDialog под кареткой

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

Кроме того, может ли кто-нибудь сказать мне, почему этот фрагмент не работает желаемым образом?

ответ

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); 

Может быть чище ...?

+0

convertPointToScreen() тип возврата недействителен – user12458

+0

SUPERB !! Большое спасибо @MadProgrammer, +1 + принято! – user12458

Смежные вопросы