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

我正在制作一个自动完成项目(就像谷歌一样)。 我的框架中有一个jtextfield,每当我在该字段中键入内容时,JWindow将出现在文本字段下方,该窗口来自另一个类。

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

任何帮助将不胜感激..谢谢……

要在屏幕上手动设置Locatio n,您必须将某些内容定义为private Point location; 从所需的JComponent getLocation ,不要忘记将show Top-Level Container的dealyed show转换为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's位置并在屏幕上获取JWindow坐标。

如果我理解得很好,你就会尝试做一个JTextfield,它会在用户输入一些文本时提出建议列表。

我过去使用过: http : //www.java2s.com/Code/Java/Swing-Components/AutocompleteComboBox.htm

它需要一些重构,但你的问题就是我说的,它将帮助你更容易(和优雅)解决它!

要使用示例:

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

你不应该使用JWindow而是使用JComboBox而不是TextField。 JWindow的设计是为了装饰窗户……