// Von [url]http://www.java-forum.org/de/viewtopic.php?t=80115&highlight=[/url]
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.*;
public class Display extends JPanel implements MouseMotionListener, MouseListener{
Choice choice = null;
public static void main(String[] args){
new Display();
}
public Display(){
JFrame frame = new JFrame("Auswahl");
frame.setSize(400,400);
frame.setLocation(100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
addMouseListener(this);
addMouseMotionListener(this);
frame.setVisible(true);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
//Hier käme ein Bild
g.setColor(Color.GREEN);
g.fillRect(120, 120, 50, 70);
if(choice!=null){
choice.draw(g);
}
}
public void mouseDragged(MouseEvent e) {
choice.width = e.getPoint().x - choice.x;
choice.height = e.getPoint().y - choice.y;
repaint();
}
public void mouseMoved(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
System.out.println("hier");
if (choice != null)
{
choice.stop();
}
choice = new Choice(this);
choice.x = e.getPoint().x;
choice.y = e.getPoint().y;
}
public void mouseReleased(MouseEvent e) {
}
}
class Choice extends Rectangle implements Runnable
{
private boolean stopped = false;
private Component owner = null;
private float phase = 0.0f;
public Choice(Component owner)
{
this.owner = owner;
new Thread(this).start();
}
public void run()
{
while (!stopped)
{
phase += 1f;
owner.repaint();
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
}
}
}
public void stop()
{
stopped = true;
}
public void draw(Graphics gr)
{
Graphics2D g = (Graphics2D)gr;
g.setColor(Color.BLACK);
BasicStroke dashed = new BasicStroke(1.0f,
BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER,
10.0f, new float[]{10}, phase);
g.setStroke(dashed);
g.drawRect(x, y, width, height);
}
}