Запомните, если размер не задан явно, все фреймы по умолчанию имеют размер 0x0 пикселей. Чтобы не усложнять наш пример, мы задали размеры фреймов так, чтобы окно нормально отображалось на большинстве мониторов. Однако в профессиональных приложениях сначала нужно проверить разрешающую способность экрана и написать код, изменяющий размер фрейма в соответствии с полученной величиной: окно, которое прекрасно смотрится на кране портативного компьютера, на экране дисплея с большой разрешающей способностью будет выглядеть как почтовая марка.
Для того чтобы определить размер экрана, надо выполнить следующие действия. Сначала следует вызвать статический метод getDefaultToolkit() класса Toolkit, который вернет объект Toolkit. (Класс Toolkit содержит много методов, предназначенных для взаимодействия с оконной системой конкретной платформы). Затем надо вызвать метод getScreenSize(), который вернет размер экрана в виде объекта Dimension. Объект Dimension содержит ширину и высоту в общедоступных(!) переменных width и height. Ниже представлен фрагмент кода, с помощью которого можно определить размер экрана.
1 2 3 4 |
Toolkit kit = Toolkit,getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width; int screenHeight = screenSize.height; |
Мы также предоставим пиктограмму для фрейма. Поскольку процесс изображения рисунков на экране также зависит от операционной системы, для загрузки рисунка нам снова нужен объект Toolkit. Затем этот рисунок устанавливается в качестве пиктограммы.
1 2 |
Image img = kit.getImage("icon.gif"); setIcon(img); |
В зависимости от операционной системы эта пиктограмма выводится по-разному. Например, в системе Windows пиктограмма отображается в левом верхнем углу окна, и ее можно увидеть в списке активных задач, если нажать клавиши <Alt+Tab>.
Программист, скоро пополнение в семье? Не забудь вовремя купить коляску трость для малыша. Доступные цены специально для программистов Java!
Ниже дается еще несколько дополнительных советов по обращению с фреймами.
- Если ваш фрейм содержит только стандартные компоненты, такие как кнопки и текстовые поля, вы можете просто вызвать метод pack(), чтобы установить размер фрейма. Фрейм будет установлен в минимальной размер, позволяющий уместить все его компоненты. Довольно часто приходится устанавливать главный фрейм программы в максимальный размер. Начиная с Java SE 1.4, вы можете просто максимизировать фрейм, вызывая:
1frame.setExtendState(Frame.MAXIMIZED_BOTH); - Также хорошей идеей будет запомнить, как пользователь позиционировал фрейм, и какой размер задал ему, чтобы восстановить эти значения при очередном запуске приложения.
- Если вы пишите приложение, которое использует преимущества многоэкранного дисплея, применяйте классы GraphicsEnvironment и GraphicsDevice для нахождения размеров экранов.
- Класс GraphicsDevice также позволяет выполнять приложения в полноэкранном режиме.
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 |
import java.awt.*; import javax.swing.*; public class SizedFrameTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { SizedFrame frame = new SizedFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } class SizedFrame extends JFrame { public SizedFrame() { // Определяем размер экрана Toolkit kit = Toolkit,getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width; int screenHeight = screenSize.height; // Установка ширины и высоты фрейма // и позиционирование с помощью платформы.setSize(screenWidth / 2, screenHeight /2); setLocationByPlatform(true); // Установка пиктограммы и заголовка окна Image img = kit.getImage("icon.gif"); setIconImage(img); setTitle("SizedFrame"); } } |