Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Создание програм с графическим интерфейсом пользователя на Java

ЦЕЛЬ ЛАБОРАТОРНОЙ РАБОТЫ:

Цель данной лабораторной работы - научиться создавать графический интерфейс пользователя, освоить на практике работу с различными объектами для создания ГИП, менеджерами размещения компонентов.

 

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ:

Для создания графического интерфейса пользователя можно использовать стандартную Javaбиблиотеку Swingили AWT. В этих библиотеках имеются различные классы, позволяющие создавать окна, кнопки, текстовые поля, меню и другие объекты.

 

TextFields - текстовое поле или поля для ввода текста (можно ввести только одну строку). Примерами текстовых полей являются поля для ввода логина и пароля, например, используемые, при входе в электронную почту.

 

Пример содания объекта класса JTextField:

 

JTextFieldjta = new JTextField (10);

 

В параметре конструктора задано число 10, это количество символов, которые могут быть видны в текстовом поле. Текст веденный в поле JText    может быть возвращен с помощью метода getText(). Также в поле можно записать новое значение с помощью метода setText(String s).

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

 

classLabExample extends JFrame { JTextFieldjta = new JTextField(10); Font fnt = new Font("Times new roman",Font.BOLD,20); LabExample() { super("Example"); setLayout(new FlowLayout()); setSize(250,100); add(jta); jta.setForeground(Color.PINK); jta.setFont(fnt); setVisible(true); }   public static void main(String[]args) { newLabExample(); } }


 

Важное замечание

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

Выполните следующий пример и наблюдайте за результатом, когда число вводится в неправильном формате:

 

importjava.awt.*; importjava.awt.event.*; importjavax.swing.*;   classLabExample extends JFrame { JTextField jta1 = new JTextField(10); JTextField jta2 = new JTextField(10); JButton button = new JButton(" Add them up"); Font fnt = new Font("Times new roman",Font.BOLD,20); LabExample() { super("Example"); setLayout(new FlowLayout()); setSize(250,150); add(new JLabel("1st Number")); add(jta1); add(new JLabel("2nd Number")); add(jta2); add(button);   button.addActionListener(new ActionListener() { public void actionPerformed(ActionEventae) { try { double x1 = Double.parseDouble(jta1.getText().trim()); double x2 = Double.parseDouble(jta2.getText().trim());   JOptionPane.showMessageDialog(null, "Result = "+(x1+x2),"Alert",JOptionPane.INFORMATION_MESSAGE);   } catch(Exception e) { JOptionPane.showMessageDialog(null, "Error in Numbers!","alert", JOptionPane.ERROR_MESSAGE); } } });   setVisible(true); }   public static void main(String[]args) { newLabExample(); } }

 

JTextArea

 

Компонент TextAreas похож на TextFields, но в него можно вводить более одной строки. В качестве примера TextArea можно рассмотреть текст, который мы набираем в теле сообщения электронной почты

 

importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; classTextAreaExample extends JFrame { JTextArea jta1 = new JTextArea(10,25); JButton button = new JButton("Add some Text"); publicTextAreaExample() { super("Example"); setSize(300,300); setLayout(new FlowLayout()); add(jta1); add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEventae) { String txt = JOptionPane.showInputDialog(null,"Insert some text"); jta1.append(txt); } }); } public static void main(String[]args) { newTextAreaExample().setVisible(true); } }

 

Замечание

Мы можем легко добавить возможность прокрутки к текстовому полю, добавив его в контейнер с именем JScrollPane следующим образом:

 

JTextAreatxtArea = new JTextArea(20,20) JScrollPanejScroll = new JScrollPane(txtArea); // … add(Scroll); // we add the scrollPane and not the text area.

 

Попробуйте выполнить сами!


 

Layout Менеджеры:

 

BorderLayout:

Разделяеткомпонентнапятьобластей (WEST, EAST, NOTH, SOUTH and Center). Другин компоненты могут быть добавлены в любой из этих компонентов пятерками.

 

 

Метод для добавления в контейнер, который есть у менеджера BorderLayout отличается и выглядит следующим образом:

 

add(comp, BorderLayout.EAST);

 

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

 

GridLayout менеджер

 

С помощью менеджера GridLayout компонент может принимать форму таблицы, где можно задать число строк и столбцов.

 

1  2  3  4

5  6  7  8

9  10 11 12

 

Если компоненту GridLayoutзадать 3 строки и 4 столбца, то компоненты будут принимать форму таблицы, показанной выше, и будут всегда будут добавляться в порядке их появления.

 

Следующий пример иллюстрирует смесь компоновки различных компонентов

 

importjavax.swing.*; import java.awt.*; importjava.awt.event.*;     classBorderExample extends JFrame { JPanel[] pnl = new JPanel[12];   publicBorderExample() { setLayout(new GridLayout(3,4)); for(inti = 0; i<pnl.length; i++) { int r = (int) (Math.random() * 255); int b = (int) (Math.random() * 255); int g = (int) (Math.random() * 255); pnl[i] = new JPanel(); pnl[i].setBackground(new Color(r,g,b)); add(pnl[i]); }   pnl[4].setLayout(new BorderLayout()); pnl[4].add(new JButton("one"),BorderLayout.WEST); pnl[4].add(new JButton("two"),BorderLayout.EAST); pnl[4].add(new JButton("three"),BorderLayout.SOUTH); pnl[4].add(new JButton("four"),BorderLayout.NORTH); pnl[4].add(new JButton("five"),BorderLayout.CENTER);   pnl[10].setLayout(new FlowLayout()); pnl[10].add(new JButton("one")); pnl[10].add(new JButton("two")); pnl[10].add(new JButton("three")); pnl[10].add(new JButton("four")); pnl[10].add(new JButton("fve"));   setSize(800,500); } public static void main(String[]args) { newBorderExample().setVisible(true); } }

 

 


Вот такой будет иметь вид, представленный выше код

 

 

Заметьте, что JFrame имеет GridLayout размера 3 на 4 (таблица), в то время как JPanelразмером (2, 1) имеет менеджер BorderLayout. А JPanel (3, 3) имеет FLowLayout.

 

NullLayoutManager


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

importjavax.swing.*; import java.awt.*; importjava.awt.event.*;   classNullLayout extends JFrame { JButton but1 = new JButton("One");; JButton but2 = new JButton("two");; JButton but3 = new JButton("three");;   publicNullLayout() { setLayout(null); but1.setBounds(150,300,100,20); // added at 150,300 width = 100, height=20 but2.setSize(80,400); // added at 0,0 width = 80, height=400 but3.setLocation(300,100); but3.setSize(200,75); // those two steps can be combined in one setBounds method call add(but1); add(but2); add(but3); setSize(500,500); } public static void main(String[]args) { newNullLayout().setVisible(true); } }  

 

 


Меню

 

Добавление меню в программе Java проста. Java определяет три компонента для обработки этих

 

•   JMenuBar: который представляет собой компонент, который содержит меню.

•   JMenu: который представляет меню элементов для выбора.


•   JMenuItem: представляет собой элемент, который можно кликнуть из меню.

 

Подобно компоненту Button (на самом деле MenuItems являются подклассами класса AbstractButton). Мы можем добавить ActionListener к ним так же, как мы делали с кнопками

ВАРИАНТЫ ЗАДАНИЙ

1. Создать окно, нарисовать в нем 20 случайных фигур, случайного цвета. Классы фигур должны наследоваться от абстрактного класса Shape, в котором описаны свойства фигуры: цвет, позиция.

2. Создать окно, отобразить в нем картинку, путь к которой указан в аргументах командной строки.

3. Создать окно, реализовать анимацию, с помощью картинки, состоящей из нескольких кадров.


 

ЛАБОРАТОРНАЯ РАБОТА №6



<== предыдущая лекция | следующая лекция ==>
Создание экземпляра класса. | Интерфейс MouseListener и обработка событий от мыши.
Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 721 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Своим успехом я обязана тому, что никогда не оправдывалась и не принимала оправданий от других. © Флоренс Найтингейл
==> читать все изречения...

2603 - | 2389 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.014 с.