русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Index.html, fon.png, prog.jar 2 страница


Дата добавления: 2015-06-12; просмотров: 841; Нарушение авторских прав


Теперь уберём с окна его верхнюю часть, включающую в себя название окна и рамки окна.

// Отключение выведение рамки окна -

// окно выводится ввиде прямоугольника

setUndecorated(true);

Если взять окно разработки Eclipse,это верхняя часть, где написано Java -lesson18: здесь же присутствуют кнопки –минимизация, максимизация окна и его закрытие, а также рамки окна.

Команда setUndecoratedубирает эти настройки, и окно становится просто прямоугольной областью с определенным фоном. Именно это нам и нужно.

Команда requestFocusнужна для того,чтобы окно было в фокусе по умолчанию.

// Запросить фокус

this.requestFocus();

Команда –setFocusableсодержит в скобках true("истина"). Если указывается истина, значит, команда или свойство действительно применяется.setFocusableделает окно в фокусе, т.е. активным.

// Получить фокус

this.setFocusable(true);

Таким образом, окно принимает в себя все нажатые пользователемклавиши. Если на экране открыто несколько окон, при нажатии пользователем каких-то клавиш, внутрь себя их принимает окно,являющееся активным.

Команда toFrontобеспечивает нахождение окна поверх других окон. to Front–поместить сверху.Таким образом, при запуске приложения, окно сразу всплывет наверх и перекрывает собой все остальные окна.

// Вывод окна на передний план

this.toFront();

Команда setDefaultCloseOperationвыполняет настройку при закрытии окна, EXIT_ON_CLOSE –это значит, что при закрытии окна –закончится работа нашего приложения.

// Завершение работы программы при закрытии окна

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

И, наконец, командаsetVisibleделает окно видимым, т.е. показывает его на экране.

// Сделать окно видимым(отобразить)

setVisible(true);

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



Добавим конструктор класса и в нем вызовем метод setWindow_:

// Конструктор класса

public okno()

{

// Вызов метода установки характеристик

// окна

setWindow_();

}

Конструктор всегда указывается с именем самого класса, тип возвращаемого значения в конструкторе не указывается.

Если, например, методsetWindow_не возвращает никакого значения, о чём символизирует слово void, при объявлении класса окна значение вообще не указывается.

Сохраним программу,перейдем в меню, Файл–Сохранить всё.Запустим приложение. Открылось окно, своим фоном перекрывшее весь экран.

Нажимаем клавиши Alt + F4–клавиши закрытия окна. Иначе окно не закрыть, нет кнопок,позволяющих это сделать. Таким образом,часть программы, выделенная на экране,создала окно нужного размера.

Метод setWindow_задал окну нужные характеристики, поместил его поверх других окон, сделал его активным, в фокусе и видимым.

Этот метод вызывается внутри конструктора класса. Вспомним,конструктор класса –это тоже метод, автоматически вызываемый при создании объекта.

Объект на основании этого класса был создан в самом начале в методе main. При создании объекта вызов конструктора происходит в правой части:

new okno()

Таким образом, когда создаётся объект, метод okno() сразу запускается на исполнение. И всё,прописанное внутри метода, соответственно,так же сработает.

Если отключить строку внутри конструктора, на экране ничего не будет видно, всё, реализованное в методе setWindow_, не сработает. Добавим ещё один метод,отвечающий за оформление окна, т. е. за реализацию интерфейса.

// Метод добавления // контента(содержимого) окна private void setContent() { // Создаем переменную для подключения // панели к окну Container cont = getContentPane(); // Создаем панель JPanel pan = new JPanel(); // Включаем возможность произвольного // размещения элементов на панели pan.setLayout(null); // Создаем два шрифта Font labFont1 = new Font("serif",0,40); Font labFont2 = new Font("serif",0,25); // Создаем текстовую надпись JLabel lab1 = new JLabel("ВАШ КОМПЬЮТЕР ЗАБЛОКИРОВАН!"); // Задаем цвет надписи lab1.setForeground(Color.BLUE); // Задаем шрифт надписи lab1.setFont(labFont1); // Устанавливаем размеры области, // в которой будет находиться надпись lab1.setBounds(50,0,800,100); // Подключаем надпись к панели pan.add(lab1); JLabel lab2 = new JLabel("Вас приветствует поздрав. блокировщикWindows!"); lab2.setForeground(Color.RED); lab2.setFont(labFont2); lab2.setBounds(50,50,800,100); pan.add(lab2); JLabel lab3 = new JLabel("Поздравляем вас с праздником 8 марта!!!"); lab3.setForeground(Color.GREEN); lab3.setFont(labFont1); lab3.setBounds(50,100,800,100); pan.add(lab3);   JLabel lab4 = new JLabel("Для снятия блокировки введите ваше имя: "); lab4.setForeground(Color.BLUE); lab4.setFont(labFont2); lab4.setBounds(50,150,800,100); pan.add(lab4);   // Создаем объект текстового поля text = new JTextArea(); // Устанавливаем шрифт text.setFont(labFont2); // Устанавливаем размеры text.setBounds(50, 250, 300, 35); // Устанавливаем цвет текста text.setForeground(new Color(0,0,100)); // Устанавливаем цвет фона text.setBackground(Color.WHITE); // Добавление поля к панели pan.add(text);   // Создание кнопки JButton btn = new JButton("Ввести"); // Установка размеров кнопки btn.setSize(150, 35); // Установка шрифта для кнопки btn.setFont(labFont2); // Установка положения кнопки btn.setLocation(50, 300); // Подключение обработчика события для кнопки btn.addActionListener(new ActionListener() { // Обработчик события при нажатии на кнопку public void actionPerformed(ActionEvent e){ // Получаем содержимое текстового поля, // переводим в нижний регистр, удаляем пробелы по бокам String str = text.getText().toLowerCase().trim(); // Создаем переменную для сравнения с введенным именем String test = (String)"маша"; // Проверяем равенство if (str.equals(test)) { // Если имя введено правильно - выводим диалоговое окно JOptionPane.showMessageDialog(null, "Еще раз поздравляем!!! Всего доброго!"); // Признак закрытия приложения устанавливаем // в истину - закрытие окна - разрешено flagExit=true; // Выполняем выход из приложения System.exit(0); } // Если имя введено неверно, то // сообщаем об этом в текстовом поле else text.setText("Ответ неверный!"); }}); // Добавление кнопки к панели pan.add(btn); // Добавление панели к окну cont.add(pan); }

 

Новый метод необходимо создать после метода setWindow_. Указано, что метод private,закрытый, доступный только внутри класса,метод не возвращает никакого значения -void, он называется setContent.

Чтобы не забыть, давайте сразу добавим вызов этого метода в конструкторе:

// Конструктор класса

public okno()

{

// Вызов метода добавления

// контента(содержимого) окна

setContent();

// Вызов метода установки характеристик

// окна

setWindow_();

}

В итоге в нашем классе находятся два метода и конструктор.

Метод setContentдобавляет все надписи текстового поля, кнопку и занимается обработкой нажатия на кнопку.

Таким образом,интерфейсная часть нашего проекта находится именно в методе setСontent. Метод setСontentнесколько больше по объёму, чем предыдущий метод.Рассмотрим подробнее, что в нём присутствует, и каково его предназначение.Во первых, создана переменная типа Container.

// Создаем переменную для подключения

// панели к окну

Container cont = getContentPane();

Эта переменная уже многократно использовалась при создании предыдущих приложений. Она получает контент окна и позволяет вкладывать различные объекты в окно типа JFraim. В нашем случае мы вкладываем в неё панель.

Панель, это прямоугольная область, вкладываемая внутрь окна. Панель имеет тип JPanel.

// Создаем панель

JPanel pan = new JPanel();

Мы создаем переменную типа JPanel , под названием panи создаем новый объект. Далее, обращаясь к этой панели, через оператор точка (.)вызываем метод setLayoutи указываем внутри в скобках параметр null,

// Включаем возможность произвольного

// размещения элементов на панели

pan.setLayout(null);

Это даёт возможность размещать в произвольном порядке (указывая координаты размещения) элементы интерфейса: надписи, текстовые поля,кнопки.

Если этот параметр не отключить, будет работать настройка автоматического размещёния элементов внутри формы, и они будут взаимосвязаны так же, как, например, в HTML-странице. Поэтому мы отключаем этот параметр при помощи метода setLayout.

В следующих двух строках создаём две переменные labFont1 и

labFont2.Переменные типа Font–это шрифт.

// Создаем два шрифта

Font labFont1 = new Font("serif",0,40);

Font labFont2 = new Font("serif",0,25);

В правой части создаётся новый объект new Font, в круглых скобках указываются три параметра: Serif–название шрифта;второй параметр –0, значит,вводимый текст будет обычным: не жирным, не подчеркнутым, не наклонным; и, наконец,последнее, размер шрифта. Чем больше значение размера шрифта, тем крупнее буква,выводимая на экран.

Мы создали две переменные, два шрифта, которые можно будет использовать в приложении. Первый – с буквами покрупнее,второй –с буквами помельче.

Далее, создана переменная типа JLable. JLable–текстовая надпись.

// Создаем текстовую надпись

JLabel lab1 = new JLabel("ВАШ КОМПЬЮТЕР ЗАБЛОКИРОВАН!");

В круглых скобках указывается надпись, выводимая на экран.Зададим ей дополнительные характеристики,для этого обратимся к переменной lab1и через оператор точка (.) вызываем поочередно следующие команды:

// Задаем цвет надписи

lab1.setForeground(Color.BLUE);

// Задаем шрифт надписи

lab1.setFont(labFont1);

// Устанавливаем размеры области,

// в которой будет находиться надпись

lab1.setBounds(50,0,800,100);

// Подключаем надпись к панели

pan.add(lab1);

Команда setForegroundустанавливает цвет надписи. Выбираем Сolor. BLUE–синий цвет.Следующая команда setFont–установка шрифта этой надписи. УказанlabFont1,объявленный выше. Эта надпись будет размером 40,покрупнее.

Далее, указан setBounds. Принцип выведения надписи на экран следующий:

При помощи setBoundsопределяется прямоугольная область,используемая на форме. Указывается её начало –угловая точка, дальше указывается ширина и высота. Таким образом, ширина окна,выводимого на экран –800пикселей и 100пикселей –высота. Т. е.,используется прямоугольный фрагмент,внутри которого будет помещёна эта надпись.

Далее обращаемся к переменной панели и при помощи методаaddприкрепляем текстовую надпись,вкладываем её в панель.

Таким образом, перед тем как показывать окно на экран, настраиваем его интерфейс: то, что в нём будет находиться, в нашем случае, текстовую надпись.

Вывод надписи осуществляется по следующему принципу.

Указан текст надписи, её цвет, размер шрифта, и, при помощи set Bounds,указанапрямоугольная область, внутри которой выводится эта строка. Рассмотрим другие надписи. По точно такой же схеме далее в методе setContentсозданы еще три надписи:

"Вас приветствует поздрав. блокировщик Windows!"

"Поздравляем вас с праздником 8 марта !!!"

"Для снятия блокировки введите ваше имя: "

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

Далее осуществляется создание текстового поля.

// Создаем объект текстового поля

text = new JTextArea();

// Устанавливаем шрифт

text.setFont(labFont2);

// Устанавливаем размеры

text.setBounds(50, 250, 300, 35);

// Устанавливаем цвет текста

text.setForeground(new Color(0,0,100));

// Устанавливаем цвет фона

text.setBackground(Color.WHITE);

// Добавление поля к панели

pan.add(text);

JTextArea–это текстовое поле, которое мы объявили как переменную в самом верху класса. Именно в это текстовое поле пользователь будет вводить свое имя.Настройки шрифта, цвета, размеров,расположения и подключения к панели происходит как и для надписи, добавился только setBackground,который задает цвет фона. В команде setForegroundцвет задан несколько иначе, при помощи метода new Color, у него указывается уже 3 параметра в круглых скобках. Это второй вариант задания цвета:при помощи составляющей RGB–red, greenи blue.

Если присвоить всем этим 3параметрам значение 0, получим чёрный цвет, если присвоить всем 3параметрам значение 255,получим белый цвет. Таким образом, все возможные значения должны находиться в пределах от0до 255.

new Сolor– это создание нового цвета с заданными характеристиками.

Можно выбрать любой цвет, диапазон возможных значений: 16 с лишним миллионов возможных комбинаций трёх параметров, принимающих значения от0до 255.

Осталось добавить кнопку, при нажатии на которую будет происходить проверка. Первое, что мы делаем:

// Создание кнопки

JButton btn = new JButton("Ввести");

// Установка размеров кнопки

btn.setSize(150, 35);

// Установка шрифта для кнопки

btn.setFont(labFont2);

// Установка положения кнопки

btn.setLocation(50, 300);

мы создаем кнопкуJButton, устанавливаем ей нужные размеры через setSize, ее шрифт, ее расположение через setLocation. Далее мы подключаем обработчик события при нажатии на кнопку с помощью addActionListener.

Метод actionPerformedбудет срабатывать при нажатии на кнопку, а значит, будет выполняться программынй код, который находится внутри фигурных скобок метода actionPerformed. После подключения обработчика события кнопку необходимо прикрепить к панели:

// Добавление кнопки к панели

pan.add(btn);

Самым последним действием в методе setContentбудет добавление самой панели к окну с помощью переменной contтипа Container:

// Добавление панели к окну

cont.add(pan);

Последнее, что осталось разобрать –это программный код в обработчике события при нажатии на кнопку, этот код находится внутри метода actionPerformed:

//Обработчик события при нажатии на кнопку public void actionPerformed(ActionEvent e){ // Получаем содержимое текстового поля, // переводим в нижний регистр, удаляем пробелы по бокам String str = text.getText().toLowerCase().trim(); // Создаем переменную для сравнения с введенным именем String test = (String)"маша"; // Проверяем равенство if (str.equals(test)) { // Если имя введено правильно - выводим диалоговое окно JOptionPane.showMessageDialog(null,"Еще раз поздравляем!!! Всего доброго!") // Признак закрытия приложения устанавливаем // в истину - закрытие окна - разрешено flagExit=true; // Выполняем выход из приложения System.exit(0); } // Если имя введено неверно, то // сообщаем об этом в текстовом поле else text.setText("Ответ неверный!"); }

 

После каждого нажатия на кнопку –будет выполняться этот фрагмент программного кода. Мы получаем в переменную значение текстового поля:

// Получаем содержимое текстового поля,

// переводим в нижний регистр, удаляем пробелы по бокам

String str = text.getText().toLowerCase().trim();

В переменную str–это переменная строкового типа –мы загружаем содержимое текстового поля, обращаемся к переменной textи c помощью метода getTextполучаем его значение, с помощьюtoLowerCaseпереводим этот текст в нижний регистр, в маленькие буквы и с помощьюtrimудаляем пробелы справа и слева.Далее создаем переменную для сравнения:

// Создаем переменную для сравнения с введенным именем

String test = (String)"маша";

Допустим имя, которое нужно ввести для снятия блокировщика:Маша

Производим сравнение:

if (str.equals(test))

Метод equalsвыполняет проверку на равенство двух строк: str иtest. Если строки равны, то условие выполняется. В этом случае мы делаем следующее:

// Если имя введено правильно - выводим диалоговое окно JOptionPane.showMessageDialog(null, "Еще раз поздравляем!!! Всего доброго!"); // Признак закрытия приложения устанавливаем // в истину - закрытие окна - разрешено flagExit=true; // Выполняем выход из приложения System.exit(0);

 

Выводим поздравительное сообщение, значение переменной flagExitустанавливаем trueи закрываем блокировщик –выходим из приложения.

В противном случае выводим пользователю сообщение:

// Если имя введено неверно, то

// сообщаем об этом в текстовом поле

else text.setText("Ответ неверный!");

Теперь запустим программу на исполнение. Появилось окно,сверху объединены 4 надписи.

Пользователь получил сообщения (см. рис.15):

Ваш компьютер заблокирован,

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

Поздравляем вас с праздником 8 марта.

Для снятия блокировки введите ваше имя.

Далее –текстовое поле, в которое пользователь может ввести имя.

Соответственно пользователь вводит имя, например, Петя. Это неправильный ответ. После нажатия клавиши "Ввести",пользователь получает сообщение – ответ неверный. Если же он вводит, например, имя Маша, правильное в проверке, нажимает "Ввести", выводится диалоговое окно с сообщением о поздравлении:

Ещё раз поздравляем!!!

Всего доброго!

Рис. 6.15

При нажатии на кнопку"Ok"приложение закрывается, окно исчезает с экрана. На этом первая часть создания программы блокировщика реализована.

Вспомним вкратце алгоритм создания первой части программы блокировщика.

Был создан класс, названokno, наследуемый от JFrame,т.е. от класса всех окон. Внутри этого класса мы создали три основные переменные, используемые внутри класса.Создали 2 метода: первый –setWindow_, устанавливающий его параметры, такие как размеры и выводящий его на экран, и второй –setContent,помещающий элементы интерфейса в окно.Далее в конструкторе мы вызываем эти два метода.

Таким образом, сначала вsetContentнастраивается интерфейсная часть окна, т. е. добавляются текстовые надписи,текстовое поле и кнопка, потом метод setWindow_задает ему нужный размер, выводит его на экран.

Конструктор срабатывает автоматически при создании объекта, поэтому, как только внутри методаmainсоздаётся новый объект, новое окно с нужным содержимым, эти два метода сразу же запустятся. В завершающей части этого приложения, которую мы напишем на следующем занятии, сделаем так, чтобы окно невозможно было закрыть клавишей Alt+F4и Диспетчером задач.Окно будет появляться сверху. Поместим результат в реестр, тогда, при автозагрузкеWindowsпользователь увидит поздравительный блокировщик. Полностью программный код этого занятия выглядит так:

//Подключение библиотек import javax.swing.*; import java.awt.*; import java.awt.event.*; // Главный класс программы public class prog { // Метод запуска приложения public static void main(String[] args) { // Создание объекта окна okno myOkno = new okno(); } } // Класса окна наследуется от JFrame class okno extends JFrame { // Переменная таймер private Timer rTimer; // Переменная текстовое поле // для ввода-вывода private JTextArea text; // Переменная, признак того, // что окно можно закрыть private boolean flagExit=false; // Метод класса для установки // характеристик окна private void setWindow_() { // Две строки для определения текущего // разрешения экрана пользователя Toolkit tk = Toolkit.getDefaultToolkit(); Dimension dm = tk.getScreenSize();   // Задание размеров окна, чтобы оно // закрыло полностью весь экран setBounds(0,0,dm.width,dm.height); // Установка минимального возможного // размера окна - размер экрана this.setMinimumSize(dm); // Установка максимального возможного // размера окна - размер экрана this.setMaximumSize(dm); // Отключение выведение рамки окна - // окно выводится ввиде прямоугольника setUndecorated(true); // Запросить фокус this.requestFocus(); // Получить фокус this.setFocusable(true); // Вывод окна на передний план this.toFront(); // Завершение работы программы при закрытии окна this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Сделать окно видимым(отобразить) setVisible(true); } // Метод добавления // контента(содержимого) окна private void setContent() { // Создаем переменную для подключения // панели к окну Container cont = getContentPane(); // Создаем панель JPanel pan = new JPanel(); // Включаем возможность произвольного // размещения элементов на панели pan.setLayout(null); // Создаем два шрифта Font labFont1 = new Font("serif",0,40); Font labFont2 = new Font("serif",0,25); // Создаем текстовую надпись JLabel lab1 = new JLabel("ВАШ КОМПЬЮТЕР ЗАБЛОКИРОВАН!"); // Задаем цвет надписи lab1.setForeground(Color.BLUE); // Задаем шрифт надписи lab1.setFont(labFont1); // Устанавливаем размеры области, // в которой будет находиться надпись lab1.setBounds(50,0,800,100); // Подключаем надпись к панели pan.add(lab1);   JLabel lab2 = new JLabel("Вас приветствует поздрав. блокировщикWindows!"); lab2.setForeground(Color.RED); lab2.setFont(labFont2); lab2.setBounds(50,50,800,100); pan.add(lab2); JLabel lab3 = new JLabel("Поздравляем вас с праздником 8 марта!!!"); lab3.setForeground(Color.GREEN); lab3.setFont(labFont1); lab3.setBounds(50,100,800,100); pan.add(lab3);   JLabel lab4 = new JLabel("Для снятия блокировки введите ваше имя: "); lab4.setForeground(Color.BLUE); lab4.setFont(labFont2); lab4.setBounds(50,150,800,100); pan.add(lab4);   // Создаем объект текстового поля text = new JTextArea(); // Устанавливаем шрифт text.setFont(labFont2); // Устанавливаем размеры text.setBounds(50, 250, 300, 35); // Устанавливаем цвет текста text.setForeground(new Color(0,0,100)); // Устанавливаем цвет фона text.setBackground(Color.WHITE); // Добавление поля к панели pan.add(text);   // Создание кнопки JButton btn = new JButton("Ввести"); // Установка размеров кнопки btn.setSize(150, 35); // Установка шрифта для кнопки btn.setFont(labFont2); // Установка положения кнопки btn.setLocation(50, 300); // Подключение обработчика события для кнопки btn.addActionListener(new ActionListener() { // Обработчик события при нажатии на кнопку public void actionPerformed(ActionEvent e){ // Получаем содержимое текстового поля, // переводим в нижний регистр, удаляем пробелы по бокам String str = text.getText().toLowerCase().trim(); // Создаем переменную для сравнения с введенным именем String test = (String)"маша"; // Проверяем равенство if (str.equals(test)) { // Если имя введено правильно - выводим диалоговое окно JOptionPane.showMessageDialog(null, "Еще раз поздравляем!!! Всего доброго!"); // Признак закрытия приложения устанавливаем // в истину - закрытие окна - разрешено flagExit=true; // Выполняем выход из приложения System.exit(0); } // Если имя введено неверно, то // сообщаем об этом в текстовом поле else text.setText("Ответ неверный!"); }}); // Добавление кнопки к панели pan.add(btn); // Добавление панели к окну cont.add(pan); }   // Конструктор класса public okno() { // Вызов метода добавления // контента(содержимого) окна setContent(); // Вызов метода установки характеристик // окна setWindow_(); } }

Занятие 7. "Создание поздравительного блокировщика Windows.Завершение"

На этом занятии мы закончим писать программу поздравительный блокировщик Windows, начатую на прошлом занятии.

 

Вспомним вкратце принцип построения блокировщика и запустим приложение.

На прошлом занятии мы создали интерфейс блокировщика, выводящий четыре сообщения, текстовое поле и кнопку"Ввести". При нажатии на кнопку происходит проверка правильности введённого имени(см. рис. 7.1).

Рис. 7.1

Имя, которое необходимо ввести, указывается в программном коде. В нашем случае, имя –Маша. Если имя указывается правильно, при нажатии на кнопку, появляется сообщение:"Примите ещё раз наши поздравления!!!Всего доброго!"(см. рис. 7.2):

Рис. 7.2

При нажатии на кнопку"Ok"приложение завершается. Если имя вводится неправильно, появляется сообщение "Ответ неверный!"(см. рис. 7.3):

 

Рис. 7.3

Окно блокировки при этом не снимается.

Условия, необходимые для правильного построения блокировщика следующие:

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

2. окно блокировщика всегда должно отображаться поверх всех остальных окон.Таким образом, у пользователя не будет возможности снять блокировщик.

Если пользователь начнёт нажимать различные клавиши, он может случайно вызвать другое приложение,оно появится поверх окна блокировщика.Поэтому окно блокировщика необходимо постоянно выводить поверх других окон. Для этого используем таймер, выводящий окно блокировщика поверх других окон много раз в секунду. Даже если пользователю удастся вызвать какое-то другое приложение,например, Диспетчер задачWindows, блокировщик мгновенно закроет это окно.

Такой таймер мы и создадим ниже. Интерфейс приложения уже закончен. Конечно, его можно оформить более красочно, добавив какие-нибудь изображения. Задача программиста –грамотно написать программу блокировщика. На данный момент,при нажатии клавиши Ctrl+Alt+Delповерх окна блокировщика в программе открываетсяДиспетчер задач(см. рис. 7.4).

Рис. 7.4

Диспетчер задач позволит сбросить блокировщик, для этого достаточно перейти на закладку"Процессы". В списке на закладке находятся запущенные процессы, один них –блокировщик. Если пролистать список, можно найти процесс с именем javaw.exe, запускаемый файл,executable file. Выбрав этот процесс и нажав кнопку "Завершить процесс",можно закрыть окно блокировщика.

Обратите внимание, когда окно блокировщика выводится наверх,остальные окна остаются на экране и отображаются под ним.

Таким образом, если добавить в приложение таймер, выводящий окно блокировщика наверх несколько раз в секунду, в случае вызова Диспетчера задач или какого-то другого приложения, окно блокировщика мгновенно вновь перекроет его сверху.

Для того чтобы произвести действие помещения окна блокировщика поверх других окон,воспользуемся новой библиотекой, под названием JNA.Скачаем её по адресу (см. рис.7.5).

Рис. 7.5

Эта библиотека поможет обратиться к функционалу операционной системы Windows.

Ранее мы использовали стандартные библиотеки Javaдля решения различных задач. При необходимости можно из Java-приложения обратиться к списку методов операционной системы Windows. Откроем браузер и перейдём по указанному адресу: http://jna.java.net(см. рис. 7.6). Слева в списке найдём ссылку:JNA. Переходим по ней (см. рис. 7.6).

Рис. 7.6

Появляется строка,предлагающая перейти ещё по одной ссылке.Переходим по ней (Github) (см. рис. 7.6).

Далее, идём вниз, чтобы скачать два архива: jna.jarи platform.jar(см. рис. 7.7). Их нужно подключить к проекту для возможности использования дополнительного функционала, не установленного в стандартном пакете разработчика Java.

Рис. 7.7

Основной функционал мы устанавливали на самом первом занятии.

Скачиваем архивы и закрываем окно браузера.

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

Открываем папку загрузки. Здесь находится два jar-архива(см. рис. 7.8).

Рис. 7.8

Для удобства поместим их в корень диска C:\. Вставляем сюда эти две библиотеки.Переходим в среду разработки Eclipseи подключим эти две библиотеки к проекту. Открываем список проектов, находим текущий проект, выделяем его название мышью (см. рис.7. 9):

Рис. 7.9

Нажимаем правую клавишу и переходим в Свойства(см. рис. 7.10):



<== предыдущая лекция | следующая лекция ==>
Index.html, fon.png, prog.jar 1 страница | Index.html, fon.png, prog.jar 3 страница


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.335 сек.