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

Implements KeyListener

{

String s;

public static BufferedImage im;

pictureBox ()

{

addKeyListener(this);

s="";

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);

g.drawString(s, 50, 30);

repaint();

}

public void keyPressed(KeyEvent ke)

{

}

public void keyReleased(KeyEvent ke)

{

}

public void keyTyped(KeyEvent ke) // ввод символа ke

{

s=s+ke.getKeyChar();

repaint();

}

}

keyPressed и keyReleased для работы с функциональными клавишами

пример

public void keyReleased(KeyEvent ke)

{

int k;

k=ke.getKeyCode();

if(k==KeyEvent.VK_F1)

s=s+”F1”;

}

на ME:

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class Prog_5_2 extends MIDlet

{

private Display dsp;

private MyCanvas cv;

public Prog_5_2()

{

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 key; // код символа

String s; // строка вывода

MyCanvas()

{

key=0;

s="";

}

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);

g.drawString(s, 20, 20,Graphics.LEFT | Graphics.TOP );

}

public void keyReleased (int keyCode)

{

key = keyCode;

s=s+(char)key;

repaint ();

}

}

}

3) Работа с таймером.

SE: (swing)

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.swing.Timer;

import javax.imageio.ImageIO;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Prog_5_3

{

JFrame form;

pictureBox pc;

Timer tm; // таймер из swing

Prog_5_3()

{

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);

tm=new Timer( 500, new ActionListener() // таймер вызывается через 0,5 с

{

public void actionPerformed(ActionEvent e)

{ // действия через 0,5 сек

if(pc.r>60)

{

tm.stop(); // после 6 раза перестать рисовать

}

else

{

pc.r=pc.r+10;

pc.repaint();

}

}

}

);

form.show();

tm.start(); // старт работы таймера

}

public static void main (String args[])

{

Prog_5_3 f;

f= new Prog_5_3();

}

}

class pictureBox extends JPanel

{

int r; // радиус окружности

public static BufferedImage im;

pictureBox ()

{

r=10; // начальное значение радиуса

}

public void paintComponent(Graphics g)

{

g.drawOval(200,200, r, r);

repaint();

}

}

В java.util имеется Timer и TimerTask

import java.util.*;

class mytask extends TimerTask

{

public void run() // перегрузка метода для выполнения

{

// выполнение задания по таймеру

}

}

Timer tm;

mytask ts; // объект выполняемого задания

tm=new Timer();

tm.schedule(ts,1000,500); // через секунду, каждые полсекунды

……………………

на ME:

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

import java.util.*;

public class Prog_5_3 extends MIDlet

{

private Display dsp;

private MyCanvas cv;

Timer tm;

myTimerTask ts;

public Prog_5_3()

{

cv= new MyCanvas();

}

public void startApp()

{

tm = new Timer();

ts=new myTimerTask();

tm.schedule(ts, 1000, 500); // через 1 сек, каждые 0,5 сек

dsp=Display.getDisplay(this);

dsp.setCurrent(cv);

}

public void pauseApp()

{

}

public void destroyApp(boolean unconditional)

{

}

class MyCanvas extends Canvas

{

int r; // радиус

MyCanvas()

{

r=20;

}

protected void paint(Graphics g)

{

g.setColor(255,0,255);

g.drawArc(100,100,r,r,0,360); // окружность

}

}

private class myTimerTask extends TimerTask // класс для выполнения

{

public void run() // перегрузка

{

if(cv.r>60)

{

tm.cancel();

}

else

{

cv.r=cv.r+10;

cv.repaint();

}

}

}

}

Задание 4б

Добавить к графическому изображению дорисовку отклика на мышь, в зависимости от координат курсора, отклика на клавиатуру, в зависимости от нажатых клавиш и движение по таймеру. Для SE запуск и остановку выполнить по нажатию button, для ME – создав в canvas 2 команды Start, Stop .

(см. this.addCommand( new Command("Back",Command.SCREEN,0)); лекция 4)

4) Таблицы

В C++ builder – StringGrid.

Пример работы с таблицей SE:

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