Создание интерфейсов прикладных программ через взаимодействие объектов в языке Java (библиотека Swing)

Страницы работы

Содержание работы


Лабораторна робота №4

Тема:       Создание интерфейсов прикладных программ через

взаимодействие объектов в языке Java

(библиотека Swing)

Задание:

На основе классов иерархии, приведенной (или созданной) в ЛР№3 (и в дополнении) создать программу (или апплет), что использует средства библиотеки Swing, стандартной библиотеки создания графического интерфейса для программ на языке Java.

В программе обязательно должны быть стандартные элементы: главное меню, разнообразные кнопки, строки введения информации, панели и др.

Текст программы:

Клас Location

class Location {

      private int x, y; // Приватні дані - координати об'єкта

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

      public Location (int ax, int ay) {

            x=ax; y=ay;}

            /** Відкриті реалізовані методи класу Location */

            public int getX() {return x;}

            public int getY() {return y;}

            public void setX(int newX) {x=newX;}

            public void setY(int newY) {y=newY;}

            public void moveBy (int dx, int dy) {x+=dx; y+=dy;}

}

Клас Point

import java.awt.*;

class Point extends Location{

      private boolean visible;

      private Color col;

      public Point (int ax, int ay, Color acol) {

            super (ax,ay);

            col=acol;

            visible=true;

      }

      /** Відкриті методи об'єкту класу Point */

      public boolean isVisible() { return visible; }

      public void setVisible(boolean aVis) { visible = aVis; }

      public void moveBy(int dx, int dy) {

      setVisible(false);

      super.moveBy(dx,dy);

      setVisible(true);}

      public void setColor(Color newCol) { col = newCol; }

      public Color getColor() { return col; }

      /** Відкритий метод draw, його буде викликати аплет, що містить Точку

      * для її відображення у своєму вікні

      */

      public void draw(Graphics g) {

            if (isVisible()) {

                  g.setColor(col);

                  g.drawLine(getX(),getY(),getX(),getY());

            }

      }

Клас Circle

import java.awt.*;

class Circle extends Point {

      private int radius;

      public Circle(int ax, int ay, int aradius, Color acol) {

            super(ax,ay,acol);

      }

      public void setRadius(int newRadius) {

            radius = newRadius;

      }

      public int getRadius() {

            return radius;

      }

      public void draw(Graphics g) {

            if (isVisible()) {

                  g.setColor(getColor());

                  g.drawOval(getX()-radius, getX()-radius, radius*2, radius*2);

            }

      }

}

Клас Bukva

import java.awt.*;

class Bukva extends Circle {

      // масиви вузлових точок

      public static int p = 10;

      final static int tx[ ] = {-10, 0, 50, 65, 40, 70, 70, 50, 0, -10};

      final static int ty[ ] = {15, 0, 0, 50, 80, 100, 150, 170, 170, 160};

      double[ ][ ] viewM = {{1, 0}, {0, 1}}; // поточна матриця повороту

      int rotation = 0; // кут повороту Букви

      /** Конструктор об'єкту Zeta */

      public Bukva(int ax, int ay, int aradius, Color acol) {

          super(ax, ay, aradius, acol); // Викликаємо конструктор предка - Circle)

      }

      /** Захищені методи класу Zeta */

      protected int getTx(int i) {

            return (int) ((tx[i]*viewM[0][0] + ty[i]*viewM[0][1])*getRadius());

      }

      protected int getTy(int i) {

            return (int) ((tx[i]*viewM[1][0] + ty[i]*viewM[1][1])*getRadius());

      }

      public void rotate(int angle) {

            rotation += angle;

            viewM[0][0] = Math.cos(Math.toRadians(rotation));

            viewM[1][0] = Math.sin(Math.toRadians(rotation));

            viewM[0][1] = -viewM[1][0];

            viewM[1][1] = viewM[0][0];

      }

      /** Відкритий метод draw, його буде викликати аплет, що містить букву

      * для її відображення у своєму вікні

      */

      public void draw(Graphics g) {

            int[ ] x, y;

            x = new int[tx.length];

            y = new int[ty.length];

            for (int i=0; i<tx.length; i++) {

            x[i] = getX()+getTx(i)/100;

            y[i] = getY()+getTy(i)/100;

            }

            g.setColor(getColor());

            g.drawPolyline(x,y,p);

      }

}

Файл Аплета Lr4.java

import java.awt.*;

import java.swing.*;

import java.event.*;

import java.util.EventListener;

class Lr4Java extends JFrame {

TLetters Letters;

TPanel panel;

JPanel bPanel;

JButton bleft,bright,bup,bdown,rotateRight,rotateLeft,expandMore, expandLess;

Eventer ev;

class TPanel extends JPanel {

public void paintComponent(Graphics g) {

super.paintComponent(g);

Letters.draw(g);

}

      }

class Eventer implements ActionListener {

public void actionPerformed(ActionEvent e) {

if(e.getSource()==bleft) {

Letters.moveBy(-STEP,0);

                        repaint();

return;

}

if(e.getSource()==bright) {

                        Letters.moveBy(STEP,0);

repaint();

return;

}

if(e.getSource()==bup) {

Letters.moveBy(0,-STEP);

repaint();

return;

                  }

if(e.getSource()==bdown) {

Letters.moveBy(0,STEP);

repaint();

return;

                  }

                  if (e.getSource()==rotateRight) {

                        Letters.rotate(STEP);

                        repaint();

                        return;

                  }    

if(e.getSource()==rotateLeft) {
            Letters.rotate(-STEP);

                        repaint();

                        return;

}

                  if (e.getSource()==expandMore) {

                        Letters.setRadius((int)

(Letters.getRadiusO+STEP));

                        repaint();

                        return;

}

if (e.getSource()==expandLess) {

Letters.setRadius((int)

(Letters.getRadius()-STEP));

if (Letters.getRadius() < 0) Letters.setRadius(0);

repaint();

return;

}

}

}

public Lr4Java() {

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

}

}

Letters = new TLetters(100,100,50,new Color(0,200,100),new Color(0,0,0));

ev = new Eventer();

panel = new TPanel();

bPanel = new JPanel();

bleft = new JButton(“Влево”);

bleft.addActionListener(ev);

bright = new JButton(“Bnpaвo”);

bright.addActionListener(ev);

bup = new JButton("BBepx");

bup.addActionListener(ev);

bdown = new JButton(“Вниз”);

bdown.addActionListener(ev);

rotateRight = new JButton ("Повернуть no ЧC");

rotateRight.addActionListener(ev);

rotateLeft = new JButton(“Повернуть nрoтив ЧC”);

rotateLeft.addActionListener(ev);

expandMore = new JButton("Увеличить");

expand-More.addActionListener(ev);

expandLess = new JButton("Уменьшить");

expandLess.addActionListener(ev);

bPanel.setLayout(new GridLayout(8,1));

bPanel.add(bleft);

bPanel.add(bright);

bPanel.add(bup);

bPanel.add(bdown);

bPanel.add(rotateRight);

bPanel.add(rotateLeft);

bPanel.add(expandMore);

bPanel.add(expandLess);

getContentPane().add(panel, BorderLayout.CENTER);

getContentPane().add(bPanel, BorderLayout.EAST);

}

public static void main(String args[]) {

Lr4Java mainFrame = new Lr4Java();

mainFrame.setSize(750, 500);

mainFrame.setTitle("Lr4Java");

mainFrame.setVisible(true);

}

}

Результат виконання роботи:

Похожие материалы

Информация о работе