Kollision von zwei ImageIcons

Für jede Komponente:
Java:
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);
	}
}
 
Schon mal Danke!!! Aber was genau machen diese Code abschnitte:
Code:
if (on && isCollapsing(l, b)) {
                    JOptionPane.showConfirmDialog(null, "");
                    on = false;
                }


Code:
    static boolean isCollapsing(JComponent jc1, BufferedImage b1) {
        return jc1.getWidth() < b1.getWidth() || jc1.getHeight() < b1.getHeight();
    }
Ich will den Code nähmlich verstehen befor ich ihn verwende.
Schonmal Danke im Vorraus!!
 
Es geht alles, wenn man genügend Informationen hat.

ImageIcon (und damit erst recht Icon) kennt nun mal keine Position. Ohne die wüsste ich nicht, wie man eine Kollision zweier ImageIcons definieren sollte.

Kennst Du aber die Positionen von zwei Icons, dann kannst Du auch sagen, ob diese kollidieren.

Beim Rechteck (java.awt.Rectangle) sieht das anders aus, denn dort sind alle notwendigen Informationen bereits gegeben.
 
die sache ist die ich füge ein Icon an eine bestimmte Koordinate ein und ich habe mehrere rechtecke (java.awt.Rectangle). das icon kann ich mit maustasten steuern und ich möchte nicht dass das icon über die rechtecke drübergehen kann
 
die sache ist die ich füge ein Icon an eine bestimmte Koordinate ein
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.
 

Neue Themen


Zurück
Oben