Как установить расположение JWindow ниже текстового поля при перетаскивании фрейма? - PullRequest
2 голосов
/ 05 сентября 2011

Я делаю проект автозаполнения (так же, как Google). В моем фрейме есть поле jtext, и всякий раз, когда я что-то печатаю в этом поле, под текстовым полем появляется JWindow, и это окно приходит из другого класса.

Теперь проблема в том, как сделать так, чтобы окно всегда появлялось под текстовым полем при каждом перетаскивании фрейма?

Любая помощь будет высоко ценится .. Спасибо ...

Ответы [ 4 ]

4 голосов
/ 05 сентября 2011

для ручной установки Locatio n на экране, вы должны определить что-то как private Point location; и 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);
 }
3 голосов
/ 05 сентября 2011

Используйте SwingUtilities.convertPointToScreen()/convertPointFromScreen() pass JTextField's position и получите координаты на экране для JWindow.

2 голосов
/ 05 сентября 2011

Если я правильно понял, вы пытаетесь создать поле JText, которое предлагает список предложений, когда пользователь вводит какой-то текст.

Я использовал это в прошлом: http://www.java2s.com/Code/Java/Swing-Components/AutocompleteComboBox.htm

Требуется немного рефакторинга, но ваша проблема в том, что я сказал, это поможет вам решить ее намного проще (и элегантнее)!

Чтобы использовать пример:

Java2sAutoTextField textField = new Java2sAutoTextField(
   Arrays.asList(new String[] {"Value 1","Value 2"}));
1 голос
/ 05 сентября 2011

Вы не должны использовать JWindow для этого, но JComboBox вместо TextField.JWindow предназначены для окон верхнего уровня ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...