Событие изменения размера окна? - PullRequest
24 голосов
/ 20 февраля 2010

Я пишу простую программу рисования с использованием Java, и я хочу, чтобы при изменении размера компонента JFrame вызывался некоторый метод. Но я не могу найти какой-либо метод, как windowResizedListener или событие, как windowResizedEvent. что я могу сделать?!

Ответы [ 5 ]

48 голосов
/ 20 февраля 2010

Реализация ComponentAdapter с componentResized():

frame.addComponentListener(new ComponentAdapter() {
    public void componentResized(ComponentEvent componentEvent) {
        // do stuff
    }
});
18 голосов
/ 20 февраля 2010

Переопределение определенных методов ComponentAdapter является удобной альтернативой реализации всех методов ComponentListener.

3 голосов
/ 20 февраля 2010

Вы должны использовать componentResized из ComponentListener .

1 голос
/ 25 марта 2016

Для доступа к событию метода изменения размера окна я использовал Implement ComponentListener внутри подкласса. Это пользовательский класс JPanel, который можно использовать для записи размера окна в JLabel внутри графического интерфейса. Просто внедрите этот класс в свой метод main и добавьте его в свой JFrame, и вы сможете изменить размер окна, и он будет динамически показывать размер вашего окна в пикселях. (Обратите внимание, что вы должны добавить свой объект JFrame в класс)

package EventHandledClasses;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentListener;
public class DisplayWindowWidth extends JPanel{
JLabel display;
JFrame frame;
public DisplayWindowWidth(JFrame frame){
        display = new JLabel("---");
        this.frame = frame;

        frame.addComponentListener(new FrameListen());
        add(display);
        setBackground(Color.white);
    }

    private class FrameListen implements ComponentListener{
        public void componentHidden(ComponentEvent arg0) {
        }
        public void componentMoved(ComponentEvent arg0) {   
        }
        public void componentResized(ComponentEvent arg0) {
            String message = " Width: " +
            Integer.toString(frame.getWidth());
            display.setText(message);

        }
        public void componentShown(ComponentEvent arg0) {

        }
    }
}
0 голосов
/ 29 июля 2017

Пример с ComponentAdapter

//Detect windows changes
window.addComponentListener(new ComponentAdapter( ) {
  public void componentResized(ComponentEvent ev) {
   label.setText(ev.toString());
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...