Вход

Использование Java-технологий для разработки графических приложений

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 188589
Дата создания 2015
Страниц 27
Источников 4
Мы сможем обработать ваш заказ (!) 22 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 700руб.
КУПИТЬ

Содержание

Содержание
Введение 3
Глава 1. Теоретическая часть 4
1.1. Язык программирования Java 4
1.2. Java платформа 5
1.3. Принципы построения графического интерфейса 8
1.4. Компоненты и контейнеры 11
1.5. Управление компоновкой компонентов 14
1.6. Обработка событий 16
Глава 2. Практическая часть 21
2.1. Задача 1. Приложение AWT «Приветствие» 21
2.2. Задача 2. Приложение «Убегающая кнопка» 22
2.3. Задача 3. Решатель квадратных уравнений 24
Заключение 27
Список литературы 28

Фрагмент работы для ознакомления

Другие методы этого класса описаны в табл. 4. Табл.4.Методы классаClickButton.МетодОписаниеvoid getDirection(int x, int y) Метод анализирует близость мыши к кнопкеvoid move(intdx, intdy, intcenterButtonX, intcenterButtonY)Метод анализирует свободное расстояние для перемещения кнопкиВнешний вид приложения представлен на рис. 5.1. Если пользователь достигает своей цели и нажимает на кнопку, то он увидит диалоговое окно с поздравлениями, результат показан на рис. 5.2.Рис.5.1. Задача 2. Внешний вид приложения «Убегающая кнопка».Рис.5.2. Задача 2. «Убегающая кнопка» после нажатия на нее.При нажатии пользователя на кнопку Okили закрытии диалогового окна приложение завершает свою работу.Задача 3. Решатель квадратных уравненийДля решения данной задачи, необходимо реализовать приложение с GUI на базе библиотеки Swing,которое вычисляет корни квадратного уравнения вида .Как известно, корни квадратного уравнения вычисляются по формуле: где дискриминант .Класс QuadraticGui решает описанную выше задачу. На этот раз перенесем всю работу по формированию GUIв метод launch() класса QuadraticGui. Создание компонентов интерфейса пользователя и добавление их в контейнер происходит в методе voidlaunch() данного класса. В качестве контейнера используется класс JPanel как и во второй задаче. Как видно изрис.6.1 и рис.6.2, при реализации данного приложения были использованы следующие компоненты JFrame,JTextField, JLabel иJButton.Табл.5. Методы классаQuadraticGui.МетодОписаниеvoidlaunch()Создание GUIdouble discriminant(double a, double b, double c)Выполняет расчет дискриминантаgetX1(final double a, final double b, final double c)Вычисляет корни уравненияdoubleconvertToNumber(Stringn)Преобразование строки в число типа doublegetTotalString(doublen)Преобразование числа типа double в строкуНа рис. 6.1 показан внешний вид программы, а на рис.6.2 показан пример расчета корней квадратного уравнения .Рис.6.1. Задача 3. Внешний вид программы.Рис.6.2. Задача 3. Результат вычисления.Дополнительно, в этой задаче, запускаем код, выполняющий прорисовку GUIв специальномуправляющем потоке библиотеки Swing. Swing имеет собственный управляющий поток (dispatchingthread),который работает параллельно со стартовым (в котором выполняется методmain()) потоком. Назначение его состоит в том, чтобы обрабатывать события интерфейса. ЗаключениеВ ходе проделанной работы были изучены основы построения GUI, при помощи библиотек пакета java.awt и javax.swing, а также методы обработки событий. Данное приложение представляет собой компиляцию из трех задач:«Приветствие», использующее только библиотеку AWT;«Убегающая кнопка», использует для отрисовкиGUIбиблиотеку Swing, для обработки событий – пакет java.awt.event;решение квадратного уравнения, также использует библиотеку Swing.Список литературыП. Ноутон, Г. Шилдт Java 2: The Complete Reference. — СПб.:БХВ-Петербург, 2008И. Хабибуллин Java 7 — СПб.: БХВ-Петербург, 2012D.Flanagan Java Examples in a Nutshell, O'reilly, 2004UsingLayoutManagers [Электронный ресурс] – Режим доступа: https://docs.oracle.com/javase/tutorial/uiswing/layout/using.htmlПриложениеЛистинг1. Текстпрограммы«Приветствие»import java.awt.*;import java.awt.event.*;class HelloListenerimplements WindowListener, ActionListener, MouseListener{private FrameWnd frame; // окноHelloListener(FrameWnd frame){this.frame = frame; }public void windowClosing(WindowEventev){System.exit(0); }public void windowActivated(WindowEventev){}public void windowClosed(WindowEventev){}public void windowDeactivated(WindowEventev){}public void windowDeiconified(WindowEventev){}public void windowIconified(WindowEventev){}public void windowOpened(WindowEventev){}public void actionPerformed(ActionEventae){ // вызывается в результатещелчканакнопкеif( ae.getActionCommand().equals(frame.btnOk.getLabel()) ) frame.m2.setText(frame.tf.getText());if( ae.getActionCommand().equals(frame.btnCancel.getLabel()) )frame.tf.setText(""); }public void mouseEntered(MouseEvent me){}public void mouseClicked(MouseEvent me){}public void mousePressed(MouseEvent me){}public void mouseReleased(MouseEvent me){}public void mouseExited(MouseEvent me){}} // end class HelloListenerclass FrameWndextends Frame {private Panel panel; Label m1,m2,m3; Button btnOk, btnCancel;TextFieldtf;public FrameWnd(String s){super(s); panel = new Panel(); // создаем panelbtnOk = new Button(" Ok "); // создаемкнопку OkbtnCancel = new Button(" Отмена "); m1 = new Label("Здравствуйте, "); m2 = new Label("______________"); m3 = new Label("ВведитеВашеимя ");tf = new TextField(30); add(panel);panel.add(m1); // добавляем Label на panel panel.add(m2);panel.add(m3);panel.add(tf); // добавляемтекстовоеполена panel panel.add(btnOk); // добавляемpanel.add(btnCancel); // кнопкина paneladdWindowListener(new HelloListener(this)); //регистрируемобработчиксобытийокнаbtnOk.addActionListener(new HelloListener(this)); //регистрируемобработчикнажатиянакнопкуOkbtnCancel.addActionListener(new HelloListener(this)); }} // end class FrameWndpublic class Hello {public static void main(String[] args) {FrameWnd f = new FrameWnd("Приветствие");f.setSize(400,350); // размерокнаf.setVisible(true); //показатьокно }}Листинг2. Текст программы «Убегающая кнопка»import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionListener;public class ClickButtonextends JPanelimplements MouseMotionListener, Constants {private JButton button;private JFrame frame;ClickButton() { // конструктор frame = new JFrame(FRAME_TITLE); //создаемокно button = new JButton(BTN_TITLE); //создаемкнопкуframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Выходпо Alt+F4frame.setSize(300, 300); // размерокнаframe.add(this);this.add(button);button.setFocusPainted(false);button.addActionListener(new ActionListener() { // добавляемобработчикнажатиянакнопкуpublic void actionPerformed(ActionEvent arg0) { // кнопканажатаbutton.setText(MSG);//пишемсообщениенакнопкеbutton.setBackground(new Color(200,255,200));// цветкнопкиtry {Thread.sleep(128);//задержка } catch (InterruptedException e1) { e1.printStackTrace(); }JOptionPane.showMessageDialog(frame,//показываемпобедныйдиалог MSG, TITLE,JOptionPane.INFORMATION_MESSAGE);frame.setVisible(false); } });frame.getContentPane().addMouseMotionListener(this);frame.setVisible(true);//Показываемокно } @Overridepublic void mouseDragged(MouseEvent e) { } @Overridepublic void mouseMoved(MouseEvent e) {this.getDirection(e.getX(), e.getY()); }private void getDirection(intx, inty) {intcenterButtonX = button.getLocation().x+(button.getWidth()/2);intcenterButtonY = button.getLocation().y+(button.getHeight()/2);intradius =(int)(button.getWidth()*1.2);intdist = (int) (2*Math.sqrt(Math.pow(x-centerButtonX, 2)+Math.pow(y-centerButtonY, 2)));if (dist < radius) {intdx = radius - dist;//приращениепо xintdy = radius - dist;//приращениепо y //меняемнаобратноеесливверхивлевоif(x > centerButtonX) dx = -dx;if(y > centerButtonY) dy = -dy; move(dx, dy, centerButtonX, centerButtonY); } }private void move(intdx, intdy, intcenterButtonX, intcenterButtonY) {intshift = (int)(Math.random() * 5 + 10);//еслидвигатьвправоif (dx > 0) {//еслисправаестьместоif (centerButtonX + button.getWidth() / 2 + dx < this.getWidth())button.setLocation(button.getLocation().x += dx, button.getLocation().y);//Двигаемelsebutton.setLocation(shift, button.getLocation().y); }//еслидвигатьвнизif (dy > 0) {//есливнизуестьместоif (centerButtonY + button.getHeight() / 2 + dy < this.getHeight())button.setLocation(this.button.getLocation().x, button.getLocation().y += dy);//Двигаемelsebutton.setLocation(button.getLocation().x,shift); }//еслидвигатьвлевоif (dx < 0) {//еслислеваестьместоif (centerButtonX - button.getWidth() / 2 > -dx)button.setLocation(button.getLocation().x += dx, button.getLocation().y);elsebutton.setLocation(this.getWidth()-(button.getWidth() + shift),button.getLocation().y ); }//еслидвигатьвверхif (dy < 0) {//есливверхуестьместоif (centerButtonY - (button.getHeight() / 2) > -dy)button.setLocation(button.getLocation().x, button.getLocation().y += dy);elsethis.button.setLocation(button.getLocation().x,this.getHeight() - (button.getHeight() + shift)); } }public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {new ClickButton();//инициализируемобъектнашегокласса в отдельномпотоке } }); }}Листинг3. Текст программы решения квадратного уравненияimportjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassQuadraticGuiimplementsConstants {privateJTextFieldinputFieldA = newJTextField(10); // текстовыеprivateJTextFieldinputFieldB = newJTextField(10); // поляprivateJTextFieldinputFieldC = newJTextField(10); //privateJLabeloutputX1 = newJLabel("");privateJLabeloutputX2 = newJLabel("");privateJButtonbtn = newJButton(BTN_TITLE); // кнопкаprivateStringstrA, strB, strC;privatedoublea, b, c;ActionListenerlistener = newActionListener() { // обработчикpublicvoidactionPerformed(ActionEventevt) {try{strA = inputFieldA.getText(); // записатьтекстизinputFieldAвстрокуstrB = inputFieldB.getText();strC = inputFieldC.getText();a = convertToNumber(strA); // преобразоватьстрокувчислоb = convertToNumber(strB);c = convertToNumber(strC);doublex1 = getX1(a, b, c); // получитькореньx1doublex2 = getX2(a, b, c); // получитькореньx2if( !Double.isNaN(x1) && !Double.isNaN(x2)) {if(x1 == x2)outputX1.setText(getTotalString(x1));else{outputX1.setText(getTotalString(x1));outputX2.setText(getTotalString(x2)); } } } catch(finalExceptione) {JOptionPane.showMessageDialog(null, "Введитезначениякоэффициентов"); }inputFieldA.requestFocusInWindow(); } };// ConstructorpublicQuadraticGui() {inputFieldA.addActionListener(listener);inputFieldB.addActionListener(listener);btn.addActionListener(listener); }// CreateGUIpublicvoidlaunch() {JPanelpanel = newJPanel(newGridLayout(4, 4, 4, 4));panel.add(newJLabel("a:")); // добавитьlabelpanel.add(newJLabel("b:"));panel.add(newJLabel("c:"));panel.add(inputFieldA); // добавитьтекстовоеполеpanel.add(inputFieldB);panel.add(inputFieldC);panel.add(newJLabel(LABEL));panel.add(outputX1);panel.add(outputX2);panel.add(btn); // добавитькнопкуJFrameframe = newJFrame(TITLE); // созданиеокнаframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // выходпоAlt+F4Containercp = frame.getContentPane(); // контейнерcp.add(panel, BorderLayout.NORTH); // добавляемвконтейнерpanelframe.pack();frame.setLocationRelativeTo(null);frame.setVisible(true);// показываем окно }privatedoublediscriminant(doublea, doubleb, doublec) { // дискриминантreturnb * b - 4 * a * c; }publicdoublegetX1(finaldoublea, finaldoubleb, finaldoublec) { // подсчетx1doubled = discriminant(a, b, c);doubleres = Double.NaN;try{if(d < 0) thrownewArithmeticException("D<0"); // d<0 выбрасываемисключениеres = ((d == 0) ? (-b / (2 * a)) : (-b + Math.sqrt(d)) / (2 * a)); } catch(ArithmeticExceptionex) { // обрабатываемисключениеJOptionPane.showMessageDialog(null,"D < 0. Действительныхкорнейнет."); }return res; }public double getX2(final double a, final double b, final double c) {double d = discriminant(a, b, c);return ((d == 0) ? (-b / (2 * a)) : (-b - Math.sqrt(d)) / (2 * a)); }private double convertToNumber(String n) {return Double.parseDouble(n); }/** * Helper * Convert number to String * @paramn * @return String */private String getTotalString(double n){return "" + n;}public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {new QuadraticGui().launch(); //запускlaunch()вотдельномпотоке } }); }}

Список литературы [ всего 4]

Список литературы
1. П. Ноутон, Г. Шилдт Java 2: The Complete Reference. — СПб.:БХВ-Петербург, 2008
2. И. Хабибуллин Java 7 — СПб.: БХВ-Петербург, 2012
3. D. Flanagan Java Examples in a Nutshell, O'reilly, 2004
4. Using Layout Managers [Электронный ресурс] – Режим доступа: https://docs.oracle.com/javase/tutorial/uiswing/layout/using.html
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00634
© Рефератбанк, 2002 - 2024