Java/Первое окно
Материал из Викиучебника
< Java
Так как в большинстве своем сегодняшние начинающие программисты не любят окно коммандной строки - приведу пример оконной аппликации.
Содержание |
[править] Начнем с простого
import javax.swing.JFrame; public class MyWindowApp extends JFrame { //Наследуя от JFrame мы получаем всю функциональность окна public MyWindowApp(){ super("My First Window"); //Заголовок окна setBounds(100, 100, 200, 200); //Если не выставить размер и положение - то окно будет мелкое и незаметное } public static void main(String[] args) { //эта функция может быть и в другом классе MyWindowApp app = new MyWindowApp(); //Создаем экземпляр нашей аппликации app.setVisible(true); //С этого момента аппликация запущена! } }
Вот у нас и получилась ничего не делающая аппликация!
[править] Делаем что-то полезное
Это конечно замечательно уметь показывать пустое окно, но мы хотим что бы оно приносило пользу! Создадим форму для подсчета ворон на заборе. Для этого будем отображать текущее количество ворон и с помощью двух кнопок добавлять или вычитать по одной.
[править] Дизайн
Это то что мы примерно хотим увидеть:
| Вороносчет | |
| Ворон на заборе : 13 | |
| Ворона прилетела | Ворона улетела |
[править] Скелет программы
Пишем программу:
import java.awt.*; import javax.swing.*; public class VoronCalc extends JFrame { private int voron = 0; private JLabel countLabel; private JButton addCrow; private JButton removeCrow; public VoronCalc(){ super("Crow calculator"); //Подготавливаем компоненты объекта countLabel = new JLabel("Crows:" + voron); addCrow = new JButton("Add Crow"); removeCrow = new JButton("Remove Crow"); //Подготавливаем временные компоненты JPanel buttonsPanel = new JPanel(new FlowLayout()); //Расставляем компоненты по местам add(countLabel, BorderLayout.NORTH); //О размещении компонент поговорим позже buttonsPanel.add(addCrow); buttonsPanel.add(removeCrow); add(buttonsPanel, BorderLayout.SOUTH); } public static void main(String[] args) { VoronCalc app = new VoronCalc(); app.setVisible(true); app.pack(); //Эта комнда подбирает оптимальный размер в зависимости от содержимого окна } }
После компиляции и запуска - получится что-то такое:
[править] Добавляем функциональность
Пришло время добавить немного интерактивности. Нам нужно сделать 3 вещи:
- Научить кнопку addCrow добавлять 1 к переменной voron.
- Научить кнопку removeCrow вычитать 1 из переменной voron.
- Научить countLabel - обновлять свое значение в зависимости от содержимого переменной voron.
[править] addCrow
Добавляем listener для кнопки addCrow.
addCrow.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { voron = voron+1; //Добавляем одну ворону updateCrowCounter(); //Сообщаем аппликацие, что количество ворон изменилось } });
[править] removeCrow
Добавляем listener для кнопки removeCrow.
removeCrow.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { if( voron > 0 ) { voron = voron - 1; updateCrowCounter(); //Сообщаем аппликации, что количество ворон изменилось } } });
[править] updateCrowCounter
private void updateCrowCounter() { countLabel.setText("Crows:" + voron); }
[править] Конечный результат
- VoronCalc.java - главный класс программы
