Hallo,
ich hätte da eine Frage bezüglich eines Java Programmes das Bilder (als Tiles "Kacheln"), wie zum Beispiel bei Google Maps, darstellen kann.
Es soll lediglich 10x10 einzelne Bilder als gesammtes Bild auf einer Fläche willkürlich verschiebbar machen.
Ist es möglich diese Bilder auch zu "löschen/auszublenden" wenn das Bild die sichtbare Fläche verlässt.
Ich habe keine Idee wie ich ein solches Programm realisieren könnte. Vielleicht hat jemand eine Idee oder kann mir eine Vorgehenweise schildern.
Zeichne ich die Bilder auf ein JPanel oder nehme ich besser ein JScrollPane? Gibt es vielleicht komplett andere Lösungsansätze? Benutze ich Image und Graphics oder Graphics2D?
Versucht habe ich es schon mit einem JPanel, aber damit komme ich nicht zum Ziel.
Hier mal der Code mit dem ich es Versucht habe. Wäre klasse, wenn jemand ne Idee hat wie sowas zu Lösen ist.
Danke im Voraus.
ich hätte da eine Frage bezüglich eines Java Programmes das Bilder (als Tiles "Kacheln"), wie zum Beispiel bei Google Maps, darstellen kann.
Es soll lediglich 10x10 einzelne Bilder als gesammtes Bild auf einer Fläche willkürlich verschiebbar machen.
Ist es möglich diese Bilder auch zu "löschen/auszublenden" wenn das Bild die sichtbare Fläche verlässt.
Ich habe keine Idee wie ich ein solches Programm realisieren könnte. Vielleicht hat jemand eine Idee oder kann mir eine Vorgehenweise schildern.
Zeichne ich die Bilder auf ein JPanel oder nehme ich besser ein JScrollPane? Gibt es vielleicht komplett andere Lösungsansätze? Benutze ich Image und Graphics oder Graphics2D?
Versucht habe ich es schon mit einem JPanel, aber damit komme ich nicht zum Ziel.
Hier mal der Code mit dem ich es Versucht habe. Wäre klasse, wenn jemand ne Idee hat wie sowas zu Lösen ist.
Java:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Oink extends JPanel {
private Image image;
private BufferedImage bi;
private MotionHandler mh;
private int x,y;
public Oink () {
mh = new MotionHandler();
//image = new ImageIcon("x.png").getImage();
image = getToolkit().getImage("x.png");
addMouseMotionListener(mh);
MediaTracker mt = new MediaTracker(this);
mt.addImage(image, 1);
try {
mt.waitForAll();
} catch (Exception e) {
System.out.println("Image not found.");
}
bi = new BufferedImage(image.getWidth(this), image.getHeight(this), BufferedImage.TYPE_INT_ARGB);
Graphics2D big = bi.createGraphics();
big.drawImage(image, 0, 0, this);
}
public class MotionHandler extends MouseAdapter {
private int x,y;
public void mouseDragged (MouseEvent e) {
int dx,dy;
dx = e.getX() - x;
dy = e.getY() - y;
x += dx;
y += dy;
System.err.println("mouseDragged: dx=" + x + " / dy=" + y);
}
/*
public void mouseClicked (MouseEvent e) {
x = e.getX();
y = e.getY();
System.out.println("mouseClicked: x=" + x);
System.out.println("mouseClicked: y=" + y);
}
public void mousePressed (MouseEvent e) {
x = e.getX();
y = e.getY();
System.out.println("mousePressed: x=" + x);
System.out.println("mousePressed: y=" + y);
}
*/
public int getPosX () {
return x;
}
public int getPosY () {
return y;
}
}
public void paintComponent (Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
x = mh.getPosX();
y = mh.getPosY();
g2.drawImage(bi,x,y,this);
repaint();
/*
for (int i=x+512;i<1512;i+=256) {
for (int j=y;j<800;j+=256) {
g2.drawImage(bi, i,j, this);
g2.drawString("" + i, i,j);
repaint();
}
}
for (int i=x+256;i>=-256;i-=256) {
for (int j=y+512;j>=-256;j-=256) {
g2.drawImage(bi, i,j, this);
g2.drawString("" + j, i,j);
repaint();
}
}
*/
}
}
Danke im Voraus.