【问题标题】:Display JDialog below caret position在插入符号位置下方显示 JDialog
【发布时间】:2013-09-16 08:30:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: java swing jtextarea jdialog


    【解决方案1】:

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

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

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

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

    可能更干净...?

    【讨论】:

    • convertPointToScreen() 返回类型为 void
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2014-06-28
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多