Java/Первое окно: различия между версиями
< Java
Содержимое удалено Содержимое добавлено
Работа в интернете официальное трудоустройство. |
Elton (обсуждение | вклад) м Откат правок 5.228.6.87 (обс.) к версии Ping08 |
||
Строка 1: | Строка 1: | ||
{{gui_nav}} |
|||
Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online» |
|||
{{Java/Chapters}} |
|||
Так как в большинстве своем сегодняшние начинающие программисты не любят окно командной строки - приведу пример оконного приложения. |
|||
Крупнейшая международная компания по продаже А/В билетов |
|||
== Начнем с простого == |
|||
срочно набирает сотрудников на постоянную основу для несложной |
|||
<source lang="java"> |
|||
работы через интернет, с ежедневными выплатами от 11 000 руб. |
|||
import javax.swing.JFrame; |
|||
Работая в нашей компании Вы получаете: |
|||
public class MyWindowApp extends JFrame { //Наследуя от JFrame мы получаем всю функциональность окна |
|||
- Соблюдение трудового кодекса |
|||
public MyWindowApp(){ |
|||
- Полный соцпакет, оплачиваемый отпуск, больничный, санаторий. |
|||
super("My First Window"); //Заголовок окна |
|||
- Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день. |
|||
setBounds(100, 100, 200, 200); //Если не выставить |
|||
- Гарантированные стабильные выплаты заработанных денег. |
|||
//размер и положение |
|||
- Выплаты происходят ежедневно на банковские карты или электронные кошельки. |
|||
//то окно будет мелкое и незаметное |
|||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //это нужно для того чтобы при |
|||
Пройдите регистрацию у нас на сайте. > airline.zarplatt.ru < |
|||
//закрытии окна закрывалась и программа, |
|||
//иначе она останется висеть в процессах |
|||
Без вложений, опыт и профессиональные навыки не требуются! |
|||
} |
|||
public static void main(String[] args) { //эта функция может быть и в другом классе |
|||
MyWindowApp app = new MyWindowApp(); //Создаем экземпляр нашего приложения |
|||
app.setVisible(true); //С этого момента приложение запущено! |
|||
} |
|||
} |
|||
</source> |
|||
Вот у нас и получилось ничего не делающее приложение! |
|||
== Делаем что-то полезное == |
|||
Это конечно замечательно уметь показывать пустое окно, но мы хотим, чтобы оно приносило пользу! Создадим форму для подсчета ворон на заборе. Для этого будем отображать текущее количество ворон и с помощью двух кнопок добавлять или вычитать по одной. |
|||
=== Дизайн === |
|||
Это то, что мы примерно хотим увидеть: |
|||
{| border=1 |
|||
|colspan=2 style="background:red"|<font color="white">Вороносчет</font> |
|||
|- |
|||
|colspan=2|'''Ворон на заборе : 666''' |
|||
|- |
|||
|Ворона прилетела |
|||
|Ворона улетела |
|||
|} |
|||
=== Скелет программы === |
|||
Пишем программу: |
|||
<source lang="java"> |
|||
import java.awt.*; |
|||
import java.awt.event.*; |
|||
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); |
|||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
|||
} |
|||
public static void main(String[] args) { |
|||
VoronCalc app = new VoronCalc(); |
|||
app.setVisible(true); |
|||
app.pack(); //Эта команда подбирает оптимальный размер в зависимости от содержимого окна |
|||
} |
|||
} |
|||
</source> |
|||
После компиляции и запуска - получится что-то такое: |
|||
[[Файл:СrowCalc.png]] |
|||
<nowiki></nowiki> |
|||
=== Добавляем функциональность === |
|||
Пришло время добавить немного интерактивности. Нам нужно сделать 3 вещи: |
|||
# Научить кнопку addCrow добавлять 1 к переменной voron. |
|||
# Научить кнопку removeCrow вычитать 1 из переменной voron. |
|||
# Научить countLabel - обновлять свое значение в зависимости от содержимого переменной voron. |
|||
==== addCrow ==== |
|||
Добавляем [[Java/Listeners|listener]] для кнопки addCrow. |
|||
<source lang="java"> |
|||
addCrow.addActionListener(new ActionListener(){ |
|||
public void actionPerformed(ActionEvent e) { |
|||
voron = voron+1; //Добавляем одну ворону |
|||
updateCrowCounter(); //Сообщаем приложению, что количество ворон изменилось |
|||
} |
|||
}); |
|||
</source> |
|||
==== removeCrow ==== |
|||
Добавляем [[Java/Listeners|listener]] для кнопки removeCrow. |
|||
<source lang="java"> |
|||
removeCrow.addActionListener(new ActionListener(){ |
|||
public void actionPerformed(ActionEvent e) { |
|||
if( voron > 0 ) { |
|||
voron = voron - 1; |
|||
updateCrowCounter(); //Сообщаем приложению, что количество ворон изменилось |
|||
} |
|||
} |
|||
}); |
|||
</source> |
|||
==== updateCrowCounter ==== |
|||
<source lang="java"> |
|||
private void updateCrowCounter() { |
|||
countLabel.setText("Crows:" + voron); |
|||
} |
|||
</source> |
|||
=== Конечный результат === |
|||
* [[Java/Первое окно/VoronCalc.java|VoronCalc.java]] - главный класс программы |
|||
{{BookCat}} |
|||
[[en:Java Programming/Events and Buttons]] |
|||
[[pt:Java/Swing/Eventos e Action listeners]] |
Версия от 22:09, 30 декабря 2016
Содержание |
|
Книга Java
- Начало
- Hello World!
- Комментарии
- Переменные
- Стандартные структуры
- Операторы условий
- Полезные сокращения
- Операторы цикла
- Классы
- Исключения
- Коллекции
- Listeners
- GUI
- Паттерны
- Программы
- Компилирование
Так как в большинстве своем сегодняшние начинающие программисты не любят окно командной строки - приведу пример оконного приложения.
Начнем с простого
import javax.swing.JFrame;
public class MyWindowApp extends JFrame { //Наследуя от JFrame мы получаем всю функциональность окна
public MyWindowApp(){
super("My First Window"); //Заголовок окна
setBounds(100, 100, 200, 200); //Если не выставить
//размер и положение
//то окно будет мелкое и незаметное
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //это нужно для того чтобы при
//закрытии окна закрывалась и программа,
//иначе она останется висеть в процессах
}
public static void main(String[] args) { //эта функция может быть и в другом классе
MyWindowApp app = new MyWindowApp(); //Создаем экземпляр нашего приложения
app.setVisible(true); //С этого момента приложение запущено!
}
}
Вот у нас и получилось ничего не делающее приложение!
Делаем что-то полезное
Это конечно замечательно уметь показывать пустое окно, но мы хотим, чтобы оно приносило пользу! Создадим форму для подсчета ворон на заборе. Для этого будем отображать текущее количество ворон и с помощью двух кнопок добавлять или вычитать по одной.
Дизайн
Это то, что мы примерно хотим увидеть:
Вороносчет | |
Ворон на заборе : 666 | |
Ворона прилетела | Ворона улетела |
Скелет программы
Пишем программу:
import java.awt.*;
import java.awt.event.*;
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);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
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 - главный класс программы