Добавление ключа и мышки слушателя - PullRequest
0 голосов
/ 31 октября 2011

Я попытался добавить слушателя клавиш и мыши в JFrame, это не сработало, и я обнаружил, что JFrame не может получить фокус.У меня есть функция, которая загружает буферизованное изображение, куда я хочу добавить мышь и ключевой слушатель во всем измерении изображения.

  public void imageloader(BufferedImage image) throws InterruptedException {

        // frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Dimension dimension = new Dimension(image.getWidth(), image.getHeight());
        setSize(200, 100);
        setVisible(true);
        label.removeAll(); //label is Jlabel
        label.setIcon(new ImageIcon(image));
        frame.setSize(dimension);
        label.revalidate();
        JScrollPane pane = new JScrollPane(label,
                ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        frame.getContentPane().add(pane);
        frame.setSize(dimension);
       // frame.setVisible(true);


    }

Как можно добавить мышь и ключевой слушатель в этот кадр изображения, не перемещая части изэта функция?

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

Добавьте MouseListener к метке.Используйте привязки клавиш для ключевых событий.

2 голосов
/ 31 октября 2011

Используйте KeyBindings вместо KeyListener , пример чего-то похожего на здесь

Причина в том, что Swing обрабатывает события,Для работы KeyListener нужен виджет с фокусом - без фокуса любые KeyListener s игнорируются (в противном случае при наборе текста все пользовательские элементы в вашем пользовательском интерфейсе будут добавлены вместо 1011 * вместо только одного с фокусом).

Необработанный KeyBindings API не заботится о фокусе - если никакое дочернее окно не обрабатывает событие, будет вызван слушатель.

0 голосов
/ 03 декабря 2011

Я решил проблему, используя Многослойные панели .Я использовал одну панель для отображения буферизованного изображения, а следующую - для прослушивания событий мыши и клавиатуры.

...