Java 当拖动框架时,如何设置文本字段下方JWindow的位置?

Java 当拖动框架时,如何设置文本字段下方JWindow的位置?,java,swing,autocomplete,intellij-idea,Java,Swing,Autocomplete,Intellij Idea,我正在做一个自动完成的项目(就像谷歌)。我的框架中有一个jtextfield,每当我在该字段中键入内容时,一个JWindow就会出现在textfield下面,并且该窗口来自另一个类 现在的问题是,当我拖动框架时,如何使窗口始终显示在文本字段下方 任何帮助都将不胜感激。。感谢…在屏幕上手动设置Location,您必须定义专用点位置和getLocation从所需的JComponent,不要忘记将显示顶级容器的已处理显示放入invokeLater() 比如说 public void showWindo

我正在做一个自动完成的项目(就像谷歌)。我的框架中有一个jtextfield,每当我在该字段中键入内容时,一个JWindow就会出现在textfield下面,并且该窗口来自另一个类

现在的问题是,当我拖动框架时,如何使窗口始终显示在文本字段下方


任何帮助都将不胜感激。。感谢…

在屏幕上手动设置
Locatio
n,您必须定义
专用点位置
getLocation
从所需的
JComponent
,不要忘记将显示顶级容器的已处理显示放入
invokeLater()

比如说

public void showWindow() {   
    window.setVisible(false);
    location = myTextField.getLocationOnScreen();
    int x = location.x;
    int y = location.y;
    window.setLocation(x - 20, y - 20);
    Runnable doRun = new Runnable() {

         @Override
         public void run() {
             window.setVisible(true);
         }
    };
    SwingUtilities.invokeLater(doRun);
 }

使用
SwingUtilities.convertPointToScreen()/convertPointFromScreen()
传递
JTextField的
位置并获取
JWindow

屏幕上的坐标如果我理解得很好,您正在尝试执行一个JTextField,当用户输入一些文本时,它会提出一系列建议

我过去用过这个:

它需要一点重构,但你的问题就是我所说的,它将帮助你更轻松地(优雅地)解决它

要使用该示例,请执行以下操作:

Java2sAutoTextField textField = new Java2sAutoTextField(
   Arrays.asList(new String[] {"Value 1","Value 2"}));

您不应该使用JWindow,而应该使用JComboBox而不是TextField。
JWindow被设计成顶级windows…

再说一遍,到底是什么问题?如果您正确编码了窗口的位置,它将在相对于文本字段的正确位置弹出,与框架的位置无关。或者你的意思是让它在拖动时保持打开和粘住?在拖动时保持打开和粘住谢谢澄清-你知道这不是默认行为(在谷歌中,f.i.-下拉菜单在拖动时关闭)在google中,下拉菜单在拖动时关闭是什么意思?允许它在拖动时关闭。但在我的情况下,当我将应用程序拖动到不同的位置时,窗口保持在屏幕上的前一个位置。如何使其显示在我拖动帧时文本字段所在的位置下方?我应该将其放置在何处?这是来自jwindow还是文本字段所在的位置?@Mikel pot将其添加到空中(@请参见编辑),然后您将仅调用voidMane,这对你来说是最简单的方法是的,你说得对,但如果可能的话,我想用JWindow试试。到目前为止,我唯一的问题是当我拖动框架时,JWindow将保留在其原始位置。