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

Менеджер расположения SpringLayout

В пакете разработки JDK имеется универсальный менеджер расположения, спо- j собный помочь добиться любого, даже самого сложного расположения компонентов. Это менеджер расположения SpringLayout из пакета javax.swing. Однако несмотря на уни­версальность, действие его весьма специфично и не похоже на действие ни одного га уже знакомых нам менеджеров расположения. С каждым компонентом ассоциируется особый информационный объект Spring, который позволяет задать расстояние (в пик­селах) между парой границ различных компонентов. Границ у компонента четыре — это его северная, восточная, западная и южная сторона. Можно задавать расстояние и между границами одного и того же компонента: например, задав расстояние между северной и южной сторонами одного компонента, вы укажете его высоту. По умолчз-

нию все компоненты имеют предпочтительный размер, однако менеджер SpringLayout тщательно учитывает и два остальных размера, не делая компоненты меньше минималь­ного и больше максимального размеров.

На первом этапе работы менеджера SpringLayout все компоненты находятся в нача­ле координат контейнера и имеют предпочтительный размер. Чтобы разместить их по нужным позициям, обычно проводят следующие действия: первый компонент отделяют некоторым расстоянием от границы контейнера, второй отделяют от первого расстоя­нием между нужными границами, далее размещают третий компонент и т. д. Рассмотрим небольшой пример и увидим все в действии:

// SpringLayoutSample.java // Работа менеджера SpringLayout import javax.swing.*; import java.awt.*;

public class SpringLayoutSample extends JFrame { public SpringLayoutSample() { super("SpringLayoutSample"); setDefaultCloseOperation(EXIT_ON_CLOSE);

// панель с использованием SpringLayout SpringLayout si = new SpringLayout();

JPanel contents = new JPanel(sl);

// добавим пару компонентов JButton buttonl, button2;

contents.add(buttonl = new JButton("Первая")) ; contents.add(button2 = new JButton("Последняя"));

// настроим распорки

si.putConstraint(SpringLayout.WEST, buttonl,

5, SpringLayout.WEST, contents); si.putConstraint(SpringLayout.WEST, button2, 5,

SpringLayout.EAST, buttonl);

// выведем окно на экран setContentPane(contents); setSize(300, 200) ; setVisible(true);

}

public static void main(String[] args) {

SwingUtilities.invokeLater( new Runnable() { public void run() { new SpringLayoutSample(); ) });

}

}

Мы создаем небольшое окно JFrame, его панелью содержимого является панель JPanel, использующая менеджер расположения SpringLayout. В полученную панель добавляются две

Менеджер SpringLayoutдовольно мощен и гибок, но совершенно не приспособлен для создания интерфейса «вручную». Посмотрите: чтобы расположить компоненты, нужны все ссылки на них, приходится оперировать абсолютными значениями расстояний между ними, и создание не самого сложного расположения из десятка компонентов рискует пре­вратиться в мешанину из вызовов putConstraint(). Поддерживать такой код очень сложно, и это не удивительно: менеджер SpringLayoutпредназначен, прежде всего, для автоматизи­рованного построения интерфейса, а для ручной работы есть более удобные приемы.

Абсолютное расположение

Никто не настаивает на обязательном использовании в контейнере менеджера рас­положения, вы можете удалить его, вызвав метод setLayout(null). В этом случае вся ответ­ственность за правильное расположение компонентов на экране ложится на ваши пле­чи: размеры и позиции компонентов придется задавать прямо в программе, вызывая для каждого компонента метод setBounds() с подходящим прямоугольником.

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

Единственным случаем, в котором приходится применять абсолютное расположение, являются графические приложения, где мы рисуем или располагаем компоненты поверх остального интерфейса, например, логотип компании. Часто для этого применяется ком­понент JXLayerили прозрачная панель (glass рапе), которые мы обсуждали в главе 6.

Вложенные расположения

В предыдущем разделе, совмещая табличное и последовательное расположения, мы познакомились с примером так называемого вложенного расположения (nested layou:*» основная идея которого очень проста — вы создаете несколько контейнеров с различ­

ными менеджерами расположения, а затем добавляете их друг в друга для получения искомого результата. Подбирая соответствующим образом менеджеры расположения, можно добиться абсолютно любого расположения компонентов.

В принципе, обычный пользовательский интерфейс вполне можно создать на осно­ве рассмотренных нами простейших расположений. Но, честно говоря, хотелось бы более гибкого подхода, особенно это касается расположения компонентов по вертика­ли. И потом, рассмотренные нами до этого расположения очень неаккуратно работа­ют с расстоянием между компонентами — его можно задать один раз, причем сразу для всех входящих в расположение компонентов. Между тем, в качественном интерфейсе расстояние между компонентами играет важнейшую роль, и чаще всего между разными компонентами оно разное. Поэтому создавать большую часть интерфейса с помощью этой идеи мы, конечно, не станем, а рассмотрим универсальные расположения, приме­няемые при создании пользовательского интерфейса чаще других.

  1. Отформатировать таблицу по СТП МГУПИ

  1. Отформатировать текст по СТП МГУПИ, ввести формулы с помощью инструмента MSEquation

В случае Cj> 0 второй способ симметризации является более предпочтитель­ным, поскольку разброс собственных значений у матрицы системы (11), как правило, меньше, чем у матрицы системы (10).

Заметим, что в случае, когда в квадратуре (6) все веса одинаковы:

Конечно, как и в случае решения произвольных систем линейных алгебраиче­ских уравнений, при использовании методов Гаусса или квадратного корня в процессе вычислений может возникнуть операция деления на нуль или пере­полнение.

Вариант № 6