Единое окно доступа к образовательным ресурсам

Среда разработки Java-приложений Eclipse (ПО для объектно-ориентированного программирования и разработки приложений на языке Java): Учебное пособие

Голосов: 25

Учебное пособие представляет собой руководство по использованию среды разработки Eclipse для создания приложений на языке Java. Основное внимание уделено практическим приемам работы с Eclipse. Пособие предназначено для преподавателей, студентов, школьников старших классов, а также для специалистов, желающих освоить самостоятельно программирование на языке Java. Пособия подготовлены в рамках проекта "Пакет свободного программного обеспечения для образовательных учреждений России" и размещены на сайте информационной поддержки проекта <a href="http://linux.armd.ru" target="_blank">linux.armd.ru</a>.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
                   С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


25             gr.drawLine(0, k, 600, k);
26             k+=30;
27           }
28           gr.setColor(Color.BLACK);
29           gr.drawLine(300, 0, 300, 300);
30           gr.drawLine(0, 150, 600, 150);
31           gr.drawLine(120, 140, 120, 160);
32           gr.drawLine(480, 140, 480, 160);
33           gr.drawString("0", 305, 165);
34           gr.drawString("-"+"\u03c0", 125, 140);
35           gr.drawString("\u03c0", 485, 140);
36           gr.setColor(Color.RED);
37           for(double i=0;i<1000;i++){
38             y=(int)(80*Math.cos(Math.PI*i/180));
39             gr.drawLine((int)i-240, y+150, (int)i-240, y+150);
40           }
41           gr.dispose();
42       }
43   }

     Класс X2
01   package MyGraph;
02   import java.awt.Color;
03   import java.awt.Graphics;
04   import javax.swing.JFrame;
05   public class X2 extends JFrame{
06     X2(String s){
07       super(s);
08       setLayout(null);
09       setSize(600,300);
10       setVisible(true);
11       this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
12       this.setResizable(false);
13       this.setLocation(300, 300);
14     }
15     public void paint(Graphics gr){
16       int y; int j=0; int k=0;
17       gr.setColor(Color.WHITE);
18       gr.fillRect(0, 0, 600, 300);
19       gr.setColor(Color.lightGray);
20       while(j<600){
21         gr.drawLine(j, 0, j, 300);
22         j+=50;
23       }
24       while(k<300){
25         gr.drawLine(0, k, 600, k);
26         k+=50;
27       }
28       gr.setColor(Color.BLACK);


                                               61


               С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


29           gr.drawLine(300, 0, 300, 300);
30           gr.drawLine(0, 150, 600, 150);
31           gr.drawString("0", 305, 165);
32           gr.setColor(Color.RED);
33           for(double i=0;i<1000;i++){
34             y=-(int)(i*i/300)+150;
35             gr.drawLine((int)i+300, y, (int)i+300, y);
36             gr.drawLine(-(int)i+300, y, -(int)i+300, y);
37           }
38           gr.dispose();
39       }
40   }

      В классе Graphics описано окно размером 120х200, в котором рас-
положены три кнопки. Нажатие кнопки обслуживается (обрабатывает-
ся) специальной процедурой, которая называется процедурой обра-
ботки события ActionEvent. При нажатии кнопки происходит создание
новой формы, в которой будет построен соответствующий график эле-
ментарной функции (22-26, 27-31, 32-36).
      Классы обработчиков событий описаны внутри параметра метода
добавления слушателя addActionListener() (22, 27, 32). Интересно, что
параметром этого метода является новый объект интерфейса
ActionListener с одним методом actionPerformed(), который и отвеча-
ет за поведение программы, в случае если будет вызвано данное собы-
тие (нажатие на кнопки).
      В классах, которые производят построение графиков, в строках
20-27 с использованием двух циклов происходит построение координат-
ной сетки светло-серым цветом, затем черным цветом строятся оси аб-
сцисс и ординат.
      Наибольший интерес представляют строки 37-40 (для синуса и ко-
синуса) и 33-37 (для параболы) в которых происходит рисование графи-
ков. Синус и косинус рисуются по аналогии: вначале вычисляется зна-
чение y и методом drawString() рисуется «линия» длиной в один пик-
сел. Координата y вычисляется путем явного преобразования типа
double в тип int, полученного в результате выполнения выражения
80*Math.cos(Math.PI*i/180).
      Парабола строится аналогичным способом, в два этапа. На первом
этапе строится положительная часть параболы и далее отрицательная.
      П р о г р а м м а 2 . Надписи на кнопках.
 01 import java.awt.*;
 02 import java.awt.event.*;
 03 import javax.swing.*;
 04 public class ExtEventHandler extends JFrame {

                                               62


               С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


05       ExtEventHandler(String s){
06           super(s);
07           setLayout(null);
08           setSize(100,200);
09           setVisible(true);
10           setResizable(false);
11           setDefaultCloseOperation(EXIT_ON_CLOSE);
12           Button b1 = new Button("Первая кнопка");
13           b1.setBounds(2, 5, 96, 22);
14           add(b1);
15           Button b2 = new Button("Вторая кнопка");
16           b2.setBounds(2, 100, 96, 22);
17           add(b2);
18           b1.addActionListener(new Handler(b1, b2));
19           b2.addActionListener(new Handler(b1, b2));
20       }
21       public static void main(String[] args) {
22         new ExtEventHandler("");
23       }
24   }
25   class Handler implements ActionListener{
26     private Button ba;
27     private Button bb;
28       String temp;
29       Handler(Button b1, Button b2){
30           this.ba=b1;
31           this.bb=b2;
32       }
33       public void actionPerformed(ActionEvent e) {
34           temp = ba.getLabel();
35           ba.setLabel(bb.getLabel());
36           bb.setLabel(temp);
37     }
38   }
     В классе ExtEventHandler (04-24) приводится основное описание
интерфейса пользователя: форма размером 100x200 и две кнопки с над-
писями: первая кнопка (12-14) и вторая кнопка (15-17).
     В приложении для обработки событий, которые возникают при на-
жатии на кнопки, описан отдельный класс Handler (25-38), который ис-
пользует интерфейс ActionListener.
     Поскольку в описании ActionListener нельзя напрямую использо-
вать компоненты, описанные в конструкторе класса ExtEventHandler,
то нужно создать ссылки на объекты, которые будут использованы. Со-
здание ссылочных объектов производится в строках 26, 27, а сами ссыл-
ки создаются в конструкторе (30, 31). Когда ссылки готовы, в процессе
добавления слушателей (18, 19), в параметрах указываем имена реаль-
ных компонентов.
                                               63


                 С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


     Таким образом, при нажатии на любую из двух кнопок меняются
местами их надписи (34-36).
     Задания к работе
       1. Создайте форму размером 500х500 и нарисуйте на ней до-
     мик.
       2. Сумматор. Создайте приложение, которое представляет со-
     бой форму 200х150. На форме разместите три текстовых поля и
     одну кнопку с надписью «Расчет». При нажатии на кнопку значе-
     ния, введенные в первые два текстовых поля, складываются и ре-
     зультат записывается в третье поле.

           Лабораторная работа №9
           Тема работы. Апплеты.
           Цель работы. Знакомство с элементами разработки Java-аппле-
тов.
           Содержание работы. Разработка апплетов.
           П р о г р а м м а 1 . Простейший апплет.
01     import java.awt.*;
02     import java.applet.*;
03     public class My_Applet extends Applet{
04       public void paint(Graphics g){
05         g.drawString("Hello, World!", 5, 30);
06         }
07     }
      Приложение представляет собой простейший Java-апплет, в кото-
ром выводится строка с использованием ранее рассмотренного метода
(05) drawString().
      Для запуска и просмотра апплетов в Eclipse используется специ-
альное программное средство AppletViewer.
      П р о г р а м м а 2 . Использование элементов графического интер-
фейса пользователя в апплетах.
 01 import java.awt.*;
 02 import java.awt.event.ActionEvent;
 03 import java.awt.event.ActionListener;
 04 import java.applet.*;
 05 public class My_Applet extends Applet{
 06     public void init(){
 07        setLayout(null);
 08        final TextField tf1 = new TextField(15);
 09        tf1.setBounds(1, 1, 100, 20);
 10        add(tf1);
 11        final TextField tf2 = new TextField(15);
 12        tf2.setBounds(1, 25, 100, 20);
 13        add(tf2);

                                                 64


           С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


14       final TextField tf3 = new TextField(15);
15       tf3.setBounds(1, 50, 100, 20);
16       add(tf3);
17       Button b1 = new Button("Кнопка 1");
18       b1.setBounds(1, 100, 100, 20);
19       add(b1);
20       b1.addActionListener(new ActionListener(){
21         public void actionPerformed(ActionEvent event){
22            try{
       tf3.setText(String.valueOf((Long.valueOf(tf1.getText())
23   +Long.valueOf(tf2.getText()))));
24            }catch(Exception e){
25                 tf3.setText("Введите числа");
26             }
27         }
28       });
29     }
30   }
     В данной программе описан апплет, в котором расположены три
текстовых поля и одна кнопка. При нажатии на кнопку введенные чис-
ленные значения первых двух полей складываются и результат записы-
вается в третье поле (вторая задача из лабораторной работы №8).
     В отличие от обычных приложений Java, в апплетах инициализа-
ция и добавление компонентов графического интерфейса пользователя
осуществляется не в конструкторе, а в методе init().
     Задания к работе
        1. Выполните задание 1 из лабораторной работы №8 в форме
     апплета.
        2. Создайте апплет, в котором при нажатии на кнопку выводит-
     ся матрица 3х3. Используйте метод drawString().

     Лабораторная работа №10
     Тема работы. Приложение «Калькулятор».
     Цель работы. Знакомство со сложным приложением Java.
     Содержание работы. Анализ и подробный разбор кода. Запуск и
тестирование приложения.
     П р о г р а м м а 1 . Калькулятор.
01   import java.awt.*; // Импорт пакета awt
02   import java.awt.event.*; // Импорт пакета обработки событий
03   import javax.swing.*; // Импорт пакета swing
     public class Calc extends JFrame{ // Начало класса Calc, наслед.
04   от класса JFrame
05   double temp = 0; // Объявление переменной temp типа double
06       Char op = ''; // Объявление переменной op типа char
07       Calc(String s){ // Начало определения конструктора Calc


                                           65


           С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


08         super(s); // Вызов конструктора суперкласса (JFrame)
09         setLayout(null); // Отказ от менеджера размещения
10         setSize(250,250); // Установка размеров окна
11         setVisible(true); // Установка видимости на экране
           this.setDefaultCloseOperation(EXIT_ON_CLOSE); //
12   Установка по умолчанию для закрытия окна
           final TextField display = new TextField(""); // Создание
13   объекта типа TextField с именем display (Поле ввода)
14         display.setEditable(false); // Запрещение редактирования
           display.setBounds(2, 2, 238, 22);// Установка
15   расположения и размеров поля ввода
16         add(display); // Добавление поля ввода в контейнер окна
17         Button b1 = new Button("1");                      Строки 17-61 описывают
18         b1.setBounds(2,30,40,40);                         создание 15 кнопок:
                                                             10 кнопок для ввода цифр,
19         add(b1);
                                                             4 кнопки для основных
20         Button b2 = new Button("2");                      арифметических операций и
21         b2.setBounds(52,30,40,40);                        одна кнопка для расчета
22         add(b2);                                          результата. После
23         Button b3 = new Button("3");                      создания каждой из кнопок
                                                             устанавливаются их
24         b3.setBounds(102,30,40,40);                       местоположения и размеры.
25         add(b3);                                          Затем кнопки добавляются
26         Button b4 = new Button("4");                      в контейнер окна.
27         b4.setBounds(2,80,40,40);
28         add(b4);
29         Button b5 = new Button("5");
30         b5.setBounds(52,80,40,40);
31         add(b5);
32         Button b6 = new Button("6");
33         b6.setBounds(102,80,40,40);
34         add(b6);
35         Button b7 = new Button("7");
36         b7.setBounds(2,130,40,40);
37         add(b7);
38         Button b8 = new Button("8");
39         b8.setBounds(52,130,40,40);
40         add(b8);
41         Button b9 = new Button("9");
42         b9.setBounds(102,130,40,40);
43         add(b9);
44         Button b0 = new Button("0");
45         b0.setBounds(2,180,40,40);
46         add(b0);
47         Button beq = new Button("=");
48         beq.setBounds(52,180,90,40);
49         add(beq);
           Button bplus = new
50
     Button("+");
51         bplus.setBounds(152,30,80,40);
52         add(bplus);
53         Button bminus = new

                                           66


             С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


     Button("-");
54
         bminus.setBounds(152,80,80,40);
55           add(bminus);
56           Button bmul = new Button("*");
57           bmul.setBounds(152,130,80,40);
58           add(bmul);
59           Button bdiv = new Button("/");
60           bdiv.setBounds(152,180,80,40);
61           add(bdiv);
         b1.addActionListener(new ActionListener()                          В строках
62                                                                          62-140 для
     {
                                                                            каждой из
       public void actionPerformed(ActionEvent
63                                                                          кнопок
     event) {                                                               производится
64     display.setText(display.getText()+"1");                              обработка
65     }                                                                    событий на
66     });                                                                  нажатие.
                                                                            Для цифровых
       b2.addActionListener(new ActionListener()
67                                                                          кнопок —
     {                                                                      добавление к
       public void actionPerformed(ActionEvent                              тексту поля
68
     event) {                                                               ввода
69     display.setText(display.getText()+"2");                              соответствующей
                                                                            цифры, для
70     }                                                                    арифметических
71     });                                                                  операций —
       b3.addActionListener(new ActionListener()                            установка
72
     {                                                                      «флага» op
       public void actionPerformed(ActionEvent                              соответствующей
73                                                                          операции,
     event) {                                                               сохранение в
74       display.setText(display.getText()+"3");                            переменной temp
75     }                                                                    введенного в
76     });                                                                  поле display
       b4.addActionListener(new ActionListener()                            числа, путем
77                                                                          преобразования
     {                                                                      строки в число
       public void actionPerformed(ActionEvent                              и очистка
78
     event) {                                                               дисплея.
79       display.setText(display.getText()+"4");
80     }
81     });
       b5.addActionListener(new ActionListener()
82
     {
       public void actionPerformed(ActionEvent
83
     event) {
84       display.setText(display.getText()+"5");
85     }
86     });
       b6.addActionListener(new ActionListener()
87
     {
       public void actionPerformed(ActionEvent
88
     event) {
89       display.setText(display.getText()+"6");

                                             67


              С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


90        }
91        });
          b7.addActionListener(new ActionListener()
92
      {
        public void actionPerformed(ActionEvent
93
      event) {
94        display.setText(display.getText()+"7");
95      }
96      });
        b8.addActionListener(new ActionListener()
97
      {
        public void actionPerformed(ActionEvent
98
      event) {
99        display.setText(display.getText()+"8");
100     }
101     });
        b9.addActionListener(new ActionListener()
102
      {
        public void actionPerformed(ActionEvent
103
      event) {
104       display.setText(display.getText()+"9");
105     }
106     });
        b0.addActionListener(new ActionListener()
107
      {
        public void actionPerformed(ActionEvent
108
      event) {
109       display.setText(display.getText()+"0");
110     }
112     });
        bplus.addActionListener(new
113
      ActionListener() {
        public void actionPerformed(ActionEvent
114
      event) {
115        op = '+';
116        temp = Double.valueOf(display.getText());
117        display.setText("");
118     }
119     });
        bminus.addActionListener(new
120
      ActionListener() {
        public void actionPerformed(ActionEvent
121
      event) {
122        op = '-';
123        temp = Double.valueOf(display.getText());
124        display.setText("");
125     }
126     });
        bdiv.addActionListener(new
127
      ActionListener() {

                                              68


            С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


        public void actionPerformed(ActionEvent
128
      event) {
129       op = '/';
130       temp = Double.valueOf(display.getText());
131       display.setText("");
132     }
133     });
        bmul.addActionListener(new
134
      ActionListener() {
        public void actionPerformed(ActionEvent
135
      event) {
136       op = '*';
137       temp = Double.valueOf(display.getText());
138       display.setText("");
139     }
140     });
        beq.addActionListener(new ActionListener()                         В строках
141                                                                        141-151
      {
                                                                           происходит
        public void actionPerformed(ActionEvent
142                                                                        обработка
      event) {                                                             события нажатия
143       switch(op){                                                      на кнопку «=».
          case '+':                                                        Путем перебора
144   display.setText(String.valueOf(temp+Double.v                         значений флага
                                                                           op,
      alueOf(display.getText()))); break;                                  определяется,
          case '-':                                                        какая операция
145   display.setText(String.valueOf(temp-                                 была выбрана и
      Double.valueOf(display.getText()))); break;                          происходит
          case '*':                                                        сложение
                                                                           значения
146   display.setText(String.valueOf(temp*Double.v                         переменной temp
      alueOf(display.getText()))); break;                                  со значением,
          case '/':                                                        введенным в
147   display.setText(String.valueOf(temp/Double.v                         поле после
      alueOf(display.getText()))); break;                                  нажатия одной
                                                                           из кнопок
148       }                                                                арифметических
149     }                                                                  операций.
150     });
151
152       } // Завершение конструктора Calc
153   public static void main(String[] args) { // Начало метода main()
154   new Calc("Calculator"); // Создание объекта Calc
155     } // Завершение метода main()
156   } // Завершение класса Calc


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



                                            69


      С.А. Казарин, А.П. Клишин, Среда разработки Java-приложений Eclipse


  2. Добавьте к данному калькулятору две кнопки — «Память» и
«Вызов из памяти», с помощью которых можно будет сохранить в
память числовое значение, находящееся в поле, и вызвать из па-
мяти ранее сохраненное значение.




                                      70



    
Яндекс цитирования Яндекс.Метрика