Семинар #4 - Графика (AWT &amp

advertisement
Факультет Информационных Технологий, 2-й курс, II семестр
Курс: Объектно-ориентированное программирование
Семинар №4. Вложенные классы. AWT. Swing.
План
1. Вопросы по заданиям семинара №3
2. Обычные, статические и анонимные вложенные классы. Модификатор final для
доступа к данным из анонимных классов.
3. Примеры программ на AWT и Swing. Различия между двумя библиотеками.
4. Базовые классы java.awt.Component и javax.swing.JComponent. Панели
java.awt.Panel и javax.swing.JPanel. Деревянная структура графических элементов
интерфейса.
5. Понятие Event. Использование Listener. Использование Adapter.
6. Понятие LayoutManager. Использование панелей без Layout. Использование
GridBagLayout.
Пример программы на AWT
import java.awt.*;
import java.awt.event.*;
public class HelloAWT extends Frame {
public HelloAWT(String str) {
super(str);
setSize(200, 200);
setLocation(300, 300);
add(new Label("Hello, World!"));
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
dispose();
}
});
}
public static void main(String args[]) {
HelloAWT frame = new HelloAWT("Test");
}
}
Пример программы на Swing
import javax.swing.*;
public class HelloSwing extends JFrame{
public HelloSwing(String str) {
super(str);
setSize(200, 200);
setLocation(300, 300);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().add(new JLabel("Hello, World!"));
setVisible(true);
}
public static void main(String args[]) {
HelloSwing frame = new HelloSwing("Test");
}
}
1
Факультет Информационных Технологий, 2-й курс, II семестр
Курс: Объектно-ориентированное программирование
Пример программы на Swing без Layout
import javax.swing.*;
public class SwingTest extends JFrame {
private JLabel label;
private SwingTest(String str) {
super(str);
setSize(200, 200);
setLocation(300, 300);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
label = new JLabel("Hello, World!");
label.setLocation(0, 0);
label.setSize(label.getPreferredSize());
getContentPane().add(label);
setVisible(true);
}
public static void main(String args[]) {
SwingTest frame = new SwingTest("Test");
}
}
Задание 4-1: Простое Swing приложение без Layout
Сделайте Swing приложение без использования LayoutManager, т.е. размеры элементов
задаются программно. Приложение рисует надпись (JLabel) и 4 кнопки. При нажатии на
кнопки происходят следующие действия:
1. Текст надписи меняется
2. Расположение надписи меняется
3. Появляется вторая надпись
4. Исчезает вторая надпись
При проведении мышкой над надписью, цвет надписи должен меняться. Когда мышка
ушла от надписи, цвет должен вернуться к первоначальному значению.
Задание 4-2: JNotepad
Сделайте простейший текстовый редактор, который предоставляет следующие
возможности:
 Меню File содержит два выбора Open и Save, соответственно для открытия и
записи файла. Используйте JFileChooser для открытия файла. Меню строится с
помощью классов JMenuBar, JMenu и JMenuItem.
 Меню About содержит пункт Info, при нажатии на который открывается
диалоговое окно с информацией о создателе. Используйте функции JOptionPane
или напрямую создавайте JDialog.
 Основное окно программы содержит вверху строку состояния, а ниже – текст
открытого файла. Строка состояния содержит имя файла (прижато к левой границе
окна) и его размер (прижат к правой границе окна). Размер меняется при
редактировании текста (смотри рисунок ниже). Используйте GridBagLayout для
расположения элементов окна. Элементы должны корректно отображаться при
растяжении окна.
2
Факультет Информационных Технологий, 2-й курс, II семестр
Курс: Объектно-ориентированное программирование

Используйте JTextArea и JScrollPane для вывода содержимого файла.
3
Download