Gibt es einen Weg um eine Kolision von zwei ImageIcons zu erkennen?
Schonmal danke im Vorraus
Schonmal danke im Vorraus
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;
public class Windows1 {
static boolean isCollapsing(JComponent jc1, BufferedImage b1) {
return jc1.getWidth() < b1.getWidth() || jc1.getHeight() < b1.getHeight();
}
public static void main(String[] args) throws IOException {
BufferedImage b = ImageIO.read(new File("..."));
JFrame f = new JFrame();
JLabel l = new JLabel(new ImageIcon(b));
f.add(l);
f.pack();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
new Timer().schedule(new TimerTask() {
boolean on = true;
@Override
public void run() {
if (on && isCollapsing(l, b)) {
JOptionPane.showConfirmDialog(null, "");
on = false;
}
}
}, 0, 100);
}
}
if (on && isCollapsing(l, b)) {
JOptionPane.showConfirmDialog(null, "");
on = false;
}
static boolean isCollapsing(JComponent jc1, BufferedImage b1) {
return jc1.getWidth() < b1.getWidth() || jc1.getHeight() < b1.getHeight();
}
Ein ImageIcon besitzt Breite und Höhe, aber keine Position. Wie soll eine Kollision damit definiert werden?Gibt es einen Weg um eine Kolision von zwei ImageIcons zu erkennen?
Schonmal danke im Vorraus
Wenn Du dafür eine Komponente verwendest (z. B. JLabel), dann kennst Du die Position. Wenn Du keine Komponente verwendest, musst Du Dir die Position (bzw. gleich das Rechteck) halt merken. Und dann musst Du lediglich zwei Rechtecke auf Schnitt prüfen. Das funktioniert mit java.awt.Rectangle#intersects.die sache ist die ich füge ein Icon an eine bestimmte Koordinate ein
test = new Rectangle(Var.pacX + 20,Var.pacY + 20,20,20);