На форме (не Lwuit) создается текстовое поле, в котором
вводится число 1, 2, 3. При выборе команды Start происходит
переключение дисплея от form к canvas и в зависимости от числа
рисуется круг, прямоугольник или закрашенный прямоугольник.
В canvas имеется команда Back, возвращающая форму.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class lab10 extends MIDlet
implements CommandListener // подключение команд
{
private Display dsp;
private Form form;
private TextField tf1; // обычное текстовое поле не lwuit
private Command cm; // команда перехода изображения в Canvas
private MyCanvas cv; // MyCanvas наследник Canvas
public lab10()
{
form = new Form("Лабораторная 11");
tf1 = new TextField(null, "", 1, TextField.ANY);
// “” - исходный текст, 1-макс.кол. символов ANY-любые символы
cm = new Command("Draw", Command.SCREEN, 0);
// имя кманды Draw, вывод на текущий экран, приоритет 0
form.append(tf1);
form.addCommand(cm);
form.setCommandListener(this); // прослушивание команды
cv= new MyCanvas(); // объект класса MyCanvas
}
public void commandAction(Command c, Displayable s)
{
dsp.setCurrent(cv); // нажатие Draw переход к Canvas
}
public void startApp()
{
dsp=Display.getDisplay(this);
dsp.setCurrent(form); // при загрузке приложения включена form
|
|
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
class MyCanvas extends Canvas
implements CommandListener
{
MyCanvas()
{
this.addCommand(new Command("Back", Command.SCREEN, 0));
// имя команды в canvas Back
this.setCommandListener(this);
}
protected void paint(Graphics g)
{
String s;
s=tf1.getString();
g.setColor(0, 200, 200);
if(s.charAt(0) =='1') // что в текстовом поле
g.drawArc(10, 20, 50, 50,0,360);
if(s.charAt(0) =='2') // что в текстовом поле
g.drawRect(10, 20, 70, 50);
if(s.charAt(0) =='3') // что в текстовом поле
g.fillRect(10, 20, 70, 50);
}
public void commandAction(Command c, Displayable d)
{
dsp.setCurrent(form); // изображение form
tf1.setString(""); // очистка текстового поля
}
}
}
5)Использование таймера в Visual C++.
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
timer1->Interval=500; // через каждые 0,5 сек переход на процедуру timer1_Tick
Work(); // начало работы
}
....................
начало программы
Form1(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
int Radius; // радиус круга рисования
Bitmap^ bmp;
Graphics^ g;
Pen ^ p;
void Work()
{
int R,G,B;
Color cl;
bmp = gcnew Bitmap(400,230);
g = Graphics::FromImage(bmp);
pictureBox1->Image = bmp;
R=250;
G=100;
B=150;
cl = System::Drawing::Color::FromArgb(R,G,B);
p=gcnew Pen(cl);
Radius=15; // начальный радиус
timer1->Enabled=true; // запуск таймера
}
.....
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
{
g->DrawArc(p,100,50,Radius,Radius,0,360); // через 0,5
pictureBox1->Refresh();
Radius=Radius+10;
if(Radius>75)
timer1->Enabled=false; // останов таймера при превышении радиуса
}
5)Использование таймера в Java SE.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class lab10
{
JFrame form;
pictureBox pc;
int Radius;
Timer tm; // таймериз swing
lab10()
{
form = new JFrame();
form.setBounds (10,20,500,500);
form.setTitle ("лабораторная 11");
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(Radius>75)
{
tm.stop();
}
else
{
Radius=Radius+15;
pc.repaint();
}
}
}
);
form. show ();
Radius=0;
tm.start(); // старт таймера
}
public static void main (String args[])
{
lab10 f;
f= new lab10();
}
class pictureBox extends JPanel // наследникот JPanel
{
public pictureBox ()
{
}
public void paintComponent(Graphics g) // рисование
{
Color c=new Color(10,200,150);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(c);
g2d.drawOval(100, 100, Radius, Radius);
}
}
}