WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Определение измения размеров окна

Определение измения размеров окна


Дата публикации: 17-03-2013

Интересно что, определение изменения размеров окна является одним из наиболее популярным вопросом. Так что в этой статье я расскажу об одной простой техникой достижения этого.

До того, как мы зароемся в этой теме, давайте попытаемся понять наши требования. Все что нам нужно сделать это определить, когда был изменен размер окна, т.е. будем слушать нечто похожее на событие изменения размера. Такой подход делает нашу задачу очень простой.

Давайте поговорим об этом дальше. Среди методов java.awt.Frame наследованных от java.awt.Component есть метод addComponentListener(). Этот метод берет экземпляр класса имплемецирующего интерфейс java.awt.event.ComponentListener. Интерфейс ComponentListener объявляет метод componentResized(), который, и выполняется, когда происходит изменение размера компонента. Это все, что мы хотели. Нижеследующий кусочек кода демонстрирует вышесказанное:

 

 


import java.awt.*;
import java.awt.event.*;

/** Demonstrates how to detect the resizing of a frame. */
public class ResizeDemo extends Frame {

/** The demo message. */
public final static String DEMO_MSG =
"Demonstrates detecting the resizing of frame. Now resize this window.";
/** The status field to show messages. */
private TextField status;

/** Initializes the demo. */
ResizeDemo() {

// The title
super("Resize Demo");

// The demo message
Label lbl = new Label(DEMO_MSG, Label.CENTER);
add(lbl, BorderLayout.NORTH);

// The status field
status = new TextField(10);
add(status);

// Add a component listener for detecting the frame resize
addComponentListener(new ResizeHandler());

// Pack and show
pack();
setVisible(true);

}

/** Main. */
public static void main(String[] args) {
ResizeDemo rd = new ResizeDemo();
}

/** Handles the resizing of the frame. */
private class ResizeHandler extends ComponentAdapter {

/** Invoked when the frame is resized. */
public void componentResized(ComponentEvent ce) {

// Get the new dimensions and show it in the status field
Dimension d = getSize();
status.setText(d.toString());

}

}

}
Здесь, метод main() создает экземпляр ResizeDemo. Конструктор ResizeDemo сперва создает компоненту пользовательского интерфейса. Затем он добавляет слушателя компонента, который отрабатывает при изменении размера компонента. В заключении он показывает окно.

Слушатель компонента свыше является экземпляром внутреннего класса ResizeHandler . Он перекрывает метод componentResized() и просто выводит новый размер фрейма в информационное поле.

ComponentListener так же имеет и другие интересные методы, типа того метода, который выполняется после того, как компонент становится видимым. Все из этих методов принимают аргумент типа java.awt.event.ComponentEvent, который предоставляет очень удобный метод getComponent(). Этот метод возвращает компонент, который вызвал это событие.

Вышеприведенная логика обработки события изменения размера компонента применима в основном ко всем компонентам. Ну, в этом и заключается вся прелесть событийной модели AWT - если вы поняли одно, то понять все остальное не составит труда.

Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Неизвестный автор:

"Интернет – пункт приёма, обмена и сбыта краденого остроумия."

Опрос

Ваша техника?

Настольный компютер
Ноутбук
Смартфон
iPad
iPhone
другое