|
package Prm;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.AffineTransform;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Prm extends JApplet
{
private static final long serialVersionUID = 1L;
private static final int RECT_WIDTH = 300;
private static final int RECT_HEIGHT = 250;
private static final int ROTATE_INCR_DEGREE = 5;
private ImagePanel imPanel;
private JButton startButton;
private RotateThread thread = null;
private boolean programStarted = false;
private int rotateDelay = 50;
private int rotateDegree = 0;
public void init()
{
setSize(600, 600);
try
{
SwingUtilities.invokeAndWait(new Runnable() {
public void run()
{
makeGUI();
}
});
}
catch (Exception exc)
{
System.out.println("Ошибка инициализации: " + exc);
}
}
public void makeGUI()
{
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
JPanel p = new JPanel();
contentPane.add(p, BorderLayout.SOUTH);
imPanel = new ImagePanel();
contentPane.add(imPanel, BorderLayout.CENTER);
startButton = new JButton("Пуск");
p.add(startButton);
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if (!programStarted)
{
startButton.setText("Остановить");
thread = new RotateThread();
thread.setStartFlag(true);
programStarted = true;
thread.start();
}
else
{
thread.setStartFlag(false);
thread = null;
programStarted = false;
startButton.setText("Пуск");
}
}
});
}
public void rotate()
{
rotateDegree += ROTATE_INCR_DEGREE;
if (rotateDegree == 360)
{
rotateDegree = 0;
}
}
class RotateThread extends Thread
{
private volatile boolean startFlag;
public void setStartFlag(boolean flag)
{
startFlag = flag;
}
public void run()
{
for (;;)
{
try
{
rotate();
imPanel.repaint();
Thread.sleep(rotateDelay);
if (!startFlag)
break;
}
catch (InterruptedException e)
{
}
}
}
}
class ImagePanel extends JPanel
{
private static final long serialVersionUID = 1L;
public ImagePanel()
{
super();
this.setOpaque(false);
}
public void paintComponent(Graphics g)
{
Graphics2D gg = (Graphics2D)g.create();
gg.setColor(Color.MAGENTA);
Rectangle rect = new Rectangle((getWidth() - RECT_WIDTH) / 2,
(getHeight() - RECT_HEIGHT) / 2, RECT_WIDTH, RECT_HEIGHT);
AffineTransform at = AffineTransform.getRotateInstance(
rotateDegree, rect.getCenterX(), rect.getCenterY());
Shape transformed = at.createTransformedShape(rect);
gg.fill(transformed);
super.paintComponent(gg);
}
}
}
Дата добавления: 2015-08-29; просмотров: 26 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
Дисциплина: Теоретическая механика | | | Иррационализм — фил учение, настаивающее на ограниченных возможностях разума, мышления и признающее осн родом познания интуицию, чувство, инстинкт Считает действительность хаотичной, лишенной |