>import java.awt.*;
>import j ava. applet. *;
>import java.util.*;
>public class FlowLayoutDemo extends Applet {
>public void init() {
>setLayout(new FlowLayout(FlowLayout.RIGHT, 10,3));
>int width = Integer.parseInt(getParanieter(,,width"));
>int height = Integer.parseInt(getParameter("height"));
>String val = "Разложим это предложение по словам";
>StringTokenizer st = new StringTokenizer(val);
>while (st.hasMoreTokens()) {
>add(new Button(st.nextToken()));
>}
>}
>}
12.13.3. Стратегия BorderLayout
Класс BorderLayout реализует обычный стиль размещения для окон верхнего уровня, в котором предусмотрено четыре узких компонента фиксированной ширины по краям и одна большая область в центре, которая может расширяться и сужаться в двух направлениях, занимая все свободное пространство окна. У каждой из этих областей есть строки-имена: String.North, String. South, String.East и String.West соответствуют четырем краям, a Center — центральной области. Ниже приведен пример BorderLayout с компонентом в каждой из названных областей.
>import java.awt.*;
>import j ava.applet. *;
>import java.util.*;
>public class BorderLayoutDemo extends Applet
>{
>public void init() {
>setLayout(new BorderLayout());
>int width = Integer.parseInt(getParameter("width"));
>int height = Integer.parseInt(getParameter("height"));
>add("North", new Button("Вверху"));
>add(" South", new Label("Внизу"));
>add("East", new Button("Слева"));
>add("West", new Button ("Справа"));
>String msg = "Пример показывает " +
> "как компоненты размещаются\n" +
> "по сторонам света.\n\n";
>add("Center", new TextArea(msg));
>}}
12.13.4. Стратегия GridLayout
Класс GridLayout размещает компоненты в простой равномерной сетке. Конструктор этого класса позволяет задавать количество строк и столбцов. Ниже приведен пример, в котором GridLayout используется для создания сетки 4x4, 15 квадратов из 16 заполняются кнопками, помеченными соответствующими индексами. Как вы уже, наверное, поняли, это панель для игры в «пятнашки».
>import j ava.awt. *;
>import java.applet. *;
>public class GridLayoutDemo extends Applet {
>static final int n = 4;
>public void init()
>{
>setLayout(new GridLayout(n, n));
>setFont(new Font("Helvetica", Font.BOLD, 24));
>int width = Integer.parseInt(getParameter("width"));
>int height = Integer.parseInt(getParameter("height"));
>for (int i = 0; i < n; i++) {
>for (int j = 0; j < n; j++) {
>intk = i * n + j;
>if (k > 0)
>add(new Button("" + k));
>}
>}
>}
12.14. Программирование окон - Window
Класс Window во многом напоминает Panel за тем исключением, что он создает свое собственное окно верхнего уровня. В основном используется не непосредственно класс Window, а его подкласс Frame. Frame — это как раз то, что обычно и считают окном на рабочей поверхности экрана. У объекта Frame есть строка с заголовком, управляющие элементы для изменения размера и линейка меню. Для того чтобы вывести (спрятать) изображение объекта Frame, нужно использовать методы show и hide. Ниже приведен пример апплета, который показывает объект Frame с содержащимся в нем компонентом TextArea.
>import java.awt. *;
>import java.applet.*;
>public class FrameDemo extends Applet {
>public void init() {
>int width = lnteger.parseInt(getParameter("width"));
>int height = Integer.parseInt(getParameter("height"));
>String val = "Это учебное пособие " + "предназначено для ознакомления\n"
> + "с основами программирования на \n"
> + "объектно-ориентированном языке Java.\n\n";
>TextArea text = new TextArea(val, 80,40);
>Frame f = new Frame("Demo Frame");
>f.setSize(width, height);
>f.add("Center", text);
>f.show();
>}
>}
12.15. Программирование меню
С каждым окном верхнего уровня может быть связана линейка меню. Объект MenuBar может включать в себя несколько объектов Menu. Последние, в свою очередь, содержат в себе список вариантов выбора — объектов MenuItem. Menu — подкласс MenuItem, так что объекты Menu также могут включаться в этот список, что позволяет создавать иерархически вложенные подменю. Вот пример, в котором к окну добавлены несколько вложенных меню.
>import java.awt.*;
>import java.applet. *;
>public class MenuDemo extends Applet