Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание 1 часть_В1-В34.docx
Скачиваний:
1
Добавлен:
19.09.2019
Размер:
3.05 Mб
Скачать
  1. Отформатировать текст по стп мгупи. Оформить рисунки и программный кода

Первый метод самый полезный: в любом интерфейсе найдутся компоненты, кото­рые нужно сделать одинаковыми. Заметьте, что makeSameSize() берет за основу ширину компонентов — определяет наиболее широкий компонент и выравнивает остальные по нему. Надо сказать, что в большинстве ситуаций выравнивание размеров компонен­тов происходит именно по ширине. Если вдруг вам понадобится метод для выравнива­ния по высоте, надо будет просто немного модифицировать этот метод и определять максимальный компонент как компонент с наибольшей высотой. Выравниваются все три размера компонентов. Обычно для компонентов, размеры которых специально делаются одинаковыми (кнопки, надписи, флажки, ползунки), это является наилуч­шим вариантом. Более сложные компоненты, которые при изменении окна долж­ны определенным образом менять свои размеры (таблицы, текстовые компоненты, и т. п.) хорошо управляются с помощью подобранных нужным образом менеджеров расположения.

О назначении метода fixTextFieldSize() мы еще не говорили, но без него наше диало­говое окно может стать просто безобразным. Дело в том, что при появлении дополни­тельного пространства в окне текстовое поле JTextField увеличивается не только в длину, как ему и положено, но и в ширину, что совсем не вяжется с представлением об одно­строчном поле ввода. Это поведение не подходит для блочного расположения BoxLayout. Видимо, это связано с тем, что все текстовые компоненты в Swing унаследованы от ба­зового класса JTextComponent, который и задает такие размеры, более подходящие для многострочных полей ввода и мини-редакторов. Чтобы исправить такую досадную оплошность, в классе GUITools и появился этот метод. Он оставляет длину текстового поля максимально возможной, а высоту заставляет оставаться на оптимальном уровне (который соответствует высоте текста).

Теперь, с классами BoxLayoutUtils и GUITools, все готово для того, чтобы в коде реализо­вать пользовательский интерфейс нашего диалогового окна:

// LoginDialog.java

// Этапы создание первоклассного

// пользовательского интерфейса на примере

// диалогового окна входа в систему

import javax.swing.*;

import java.awt.*;

import com.porty.swing.BoxLayoutUtils; import com.porty.swing.GUITools;

public class LoginDialog extends JDialog { public LoginDialog(JFrame pareift) { super(parent, "Вход в систему");

// удаление окна при закрытии setDefaultCloseOperation(DISPOSE_ON_CLOSE);

// добавляем расположение в центр окна

add(createGUI());

// задаем предпочтительный размер

pack () ;

// выводим окно на экран setVisible(true) ;

}

// этот метод будет возвращать панель с

// созданным расположением

privateJPanelcreateGUI() {

// 1. Создается панель, которая будет содержать

// все остальные элементы и панели расположения

JPanel main =

BoxLayoutUtils.createVerticalPanel();

// Чтобы интерфейс отвечал требованиям Java,

// необходимо отделить его содержимое от

// границ окна на 12 пикселов.

// Для этого используем пустую рамку

main.setBorder(

BorderFactory.createEmptyBorder(12,12,12,12));