Java/Первое окно: различия между версиями

2989 байт убрано ,  4 года назад
Оригинальный Xiaomi Redmi Note 4 Х 4 Х Смартфон 3 ГБ ОПЕРАТИВНОЙ ПАМЯТИ 32 ГБ ROM Snapdragon 625 Octa Core MIUI 8.1 Отпечатков Пальцев 5.5 "FHD 4 Г FDD LTE
(Отмена правки 130346, сделанной Volobuev Ilya (обсуждение))
(Оригинальный Xiaomi Redmi Note 4 Х 4 Х Смартфон 3 ГБ ОПЕРАТИВНОЙ ПАМЯТИ 32 ГБ ROM Snapdragon 625 Octa Core MIUI 8.1 Отпечатков Пальцев 5.5 "FHD 4 Г FDD LTE)
Оригинал Xiaomi Redmi Note 4 Х 4 Х Смартфон 3 ГБ ОПЕРАТИВНОЙ ПАМЯТИ 32 ГБ ROM Snapdragon 625 Octa Core MIUI 8.1 Отпечатков Пальцев 5.5 "FHD 4 Г FDD LTE
{{Java/Chapters}}
Так как в большинстве своем сегодняшние начинающие программисты не любят окно командной строки - приведу пример оконного приложения.
Лучшая версия себя. Полюбившийся публике RedMi Note 4 стал еще лучше, переродившись в новой модели – Xiaomi RedMi Note 4 Pro. И что самое приятное, цена на телефон по-прежнему радует не меньше, чем и сами нововведения!
== Начнем с простого ==
<source lang="java">
Производитель:Xiaomi
import javax.swing.JFrame;
Разблокировка телефона:Да
 
Тип батареи:Не съёмная
public class MyWindowApp extends JFrame { //Наследуя от JFrame мы получаем всю функциональность окна
Разрешение дисплея:1920x1080
 
Емкость батареи (мАч):4000mAh(Min) - 4100mAh(Typ)
public MyWindowApp(){
Операционная система:Android
super("My First Window"); //Заголовок окна
Особенности:Гравитационный эффект,GPRS,Сенсорный экран,Сообщение,Bluetooth,Видеоплеер,Видеоплеер HD,Wi-Fi,Воспроизведение MP3,FM-радио,GPS-навигация,Передняя камера,Слоты карт памяти,E-mail,QWERTY-клавиатура
setBounds(100, 100, 200, 200); //Если не выставить
Модель Xiaomi:Редми Примечание 4X3 ГБ 32 ГБ
//размер и положение
Язык:Русский,Немецкий,Испанский,Польский,Турецкий,Английский,Норвежский,Итальянский,Французский,Португальский
//то окно будет мелкое и незаметное
Камера:13.0 MP
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //это нужно для того чтобы при
Тип камеры:Передняя & задняя камера
//закрытии окна закрывалась и программа,
Количество SIM-карт:Две SIM-карты
//иначе она останется висеть в процессах
Дата выпуска:2017
}
Сотовая связь:GSM/WCDMA/LTE
 
ПЗУ:32 ГБ
public static void main(String[] args) { //эта функция может быть и в другом классе
Состояние:Новое
MyWindowApp app = new MyWindowApp(); //Создаем экземпляр нашего приложения
Чёткость записи:1080P
app.setVisible(true); //С этого момента приложение запущено!
Размер дисплея:5,5
}
Производитель процессора:Qualcomm
}
Процессор:Восьмиядерный
</source>
Дизайн:Стержень
 
Толщина:Ультра тонкий (<9mm)
Вот у нас и получилось ничего не делающее приложение!
Тип сенсорного экрана:Ёмкостный экран
 
Время Разговора:About 6-8 hours
== Делаем что-то полезное ==
Режим диапазона:2SIM/Multi-Bands
 
Цвет дисплея:Цвет
Это конечно замечательно уметь показывать пустое окно, но мы хотим, чтобы оно приносило пользу! Создадим форму для подсчета ворон на заборе. Для этого будем отображать текущее количество ворон и с помощью двух кнопок добавлять или вычитать по одной.
ОЗУ:3 ГБ
 
Размер:151mm*76mm*8.45mm
=== Дизайн ===
Язык:Chinese
Это то, что мы примерно хотим увидеть:
MIUI:MIUI 8.1
{| border=1
Fingerprint:Support
|colspan=2 style="background:red"|<font color="white">Вороносчет</font>
CPU:Snapdragon 625 Octa Core up to 2.0GHz
|-
TF Card:Support , up to 128GB
|colspan=2|'''Ворон на заборе : 666'''
2G:GSM B2/B3/B5/B8
|-
3G:WCDMA B1/B2/B5/B8;TD-SCDMA B34/B39;CDMA2000/1X BC0
|Ворона прилетела
4G:FDD-LTE B1/B3/ B5/B7/ B8;TD-LTE B38/B39/B40/B41(2555-2655MHz)
|Ворона улетела
Xiaomi Model:Xiaomi Redmi Note 4 X
|}
 
Цена: 9 870 руб.
=== Скелет программы ===
Пишем программу:
Более детальный обзор на нашем сайте. www.xiaomi-redmi-note.tk
 
<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]]
Анонимный участник