Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec5.doc
Скачиваний:
16
Добавлен:
10.09.2019
Размер:
10.41 Mб
Скачать

1) Обработка событий от мыши

Принцип делегирования – событие отправляется одному или нескольким слушателям. Слушатели включают прослушивание соответствующего события.

MouseListener имеет 5 методов, которые следует бработать.

Пример на SE для JPanel с изображениями:

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Prog_5_1

{

JFrame form;

pictureBox pc; // панель для рисования

Prog_5_1()

{

form = new JFrame();

form.setSize (500,500);

form.setTitle ("лабораторная 5");

form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

form.setLayout(null);

pc=new pictureBox();

pc.setBounds(0, 0, 300, 300);

form.add(pc);

form.show();

}

public static void main (String args[])

{

Prog_5_1 f;

f= new Prog_5_1();

}

}

class pictureBox extends JPanel

Implements MouseListener // использование прослушивания мыши

{

int Regim;

Int mouseX,mouseY; // координаты мыши

public static BufferedImage im;

pictureBox ()

{

mouseX=0;

mouseY=0;

Regim=0;

addMouseListener(this); // подключение прослушивания мыши

try

{

im = ImageIO.read(new File("face1.jpg"));

}

catch (IOException e)

{

}

}

public void paintComponent(Graphics g)

{

Graphics2D g2 = im.createGraphics();

g.drawImage(im, 0, 0, null);

if(Regim==1) // после события от мыши!

{

Color c;

c=new Color(220,0,250);

g.setColor(c);

g.drawOval(mouseX,mouseY,40, 40);

}

repaint();

}

// 5 событий от мыши

public void mouseClicked(MouseEvent me)

{

}

public void mouseEntered(MouseEvent me)

{

}

public void mouseExited(MouseEvent me)

{

}

public void mousePressed(MouseEvent me)

{

}

public void mouseReleased(MouseEvent me)

{

mouseX=me.getX(); // координаты курсора мыши

mouseY=me.getY();

Regim=1;

repaint();

}

}

MouseMotionListener имеет 2 метода: mouseDragged (MouseEvent me) и

mouseMoved(MouseEvent me)

На ME:

pointer – мышь для мобильных устройств. Телефон должен быть touchscreen.

Canvas поддерживает pointer

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class Prog_5_1 extends MIDlet

{

private Display dsp;

private MyCanvas cv;

public Prog_5_1()

{

cv= new MyCanvas();

}

public void startApp()

{

dsp=Display.getDisplay(this);

dsp.setCurrent(cv);

}

public void pauseApp()

{

}

public void destroyApp(boolean unconditional)

{

}

class MyCanvas extends Canvas

{

Int Regim;

Int mouseX,mouseY; // координаты мыши

MyCanvas()

{

mouseX=0;

mouseY=0;

Regim=0;

}

protected void paint(Graphics g)

{

Image im = null;

try

{

im=Image.createImage("/Images/face1.jpg");

}

catch (Exception e)

{

}

g.drawImage(im, 10, 10, Graphics.LEFT | Graphics.TOP);

if(Regim==1) // после point дорисовать

{

g.setColor(100,50,200);

g.fillRect(mouseX, mouseY, 30, 40);

}

}

public void pointerPressed (int x, int y)

{

}

public void pointerReleased (int x, int y)

{

mouseX=x;

mouseY=y;

Regim=1;

repaint();

}

public void PointerDragged (int x, int y)

{

}

}

}

2)Обработка событий от клавиатуры

SE:

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Prog_5_2

{

JFrame form;

pictureBox pc;

Prog_5_2()

{

form = new JFrame();

form.setSize (500,500);

form.setTitle ("лабораторная 5");

form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

form.setLayout(null);

pc=new pictureBox();

pc.setBounds(0, 0, 300, 300);

form.add(pc);

pc.setFocusable(true); // перехват клавиш когда в фокусе

form.show();

}

public static void main (String args[])

{

Prog_5_2 f;

f= new Prog_5_2();

}

}

class pictureBox extends JPanel

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]