Hallo zusammen,
leider ist mir kein besserer Titel eingefallen. Ich übe im Moment wieder ein wenig. Hab mir hierzu ein Beispiel von hier genommen und umgebaut. Mein Ziel ist, mehrere Karten zu bewegen. Die erste Karte funktioniert auch.
Nun bilde ich mir ein, eine neue Instanz zu bilden, um die 2. Karte zu bewegen.
Aber nun bewegt sich nur noch die 2. Karte. Ich komme nicht drauf, was mein Denkfehler ist.
leider ist mir kein besserer Titel eingefallen. Ich übe im Moment wieder ein wenig. Hab mir hierzu ein Beispiel von hier genommen und umgebaut. Mein Ziel ist, mehrere Karten zu bewegen. Die erste Karte funktioniert auch.
Code:
imageLabel = new ImageLabel();
cardDefault = new ImageIcon("cardDefault.png");
imageLabel.setIcon(cardDefault, 10, 6, 60);
Nun bilde ich mir ein, eine neue Instanz zu bilden, um die 2. Karte zu bewegen.
Code:
imageLabel2 = new ImageLabel();
cardDefault = new ImageIcon("cardDefault.png");
imageLabel2.setIcon(cardDefault, 9, 6, 80);
Aber nun bewegt sich nur noch die 2. Karte. Ich komme nicht drauf, was mein Denkfehler ist.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MoveImageIcon extends JFrame implements ActionListener {
private ImageLabel imageLabel, imageLabel2;
private ImageIcon cardDefault;
private JButton nextButton;
private JPanel mainPanel;
public MoveImageIcon() {
super();
setSize(1000,800);
setLocationRelativeTo(null);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
// nextButton = new JButton("Karte");
// nextButton.addActionListener(this);
// getContentPane().add(nextButton, BorderLayout.NORTH);
imageLabel = new ImageLabel();
cardDefault = new ImageIcon("cardDefault.png");
imageLabel.setIcon(cardDefault, 10, 6, 60);
imageLabel2 = new ImageLabel();
cardDefault = new ImageIcon("cardDefault.png");
imageLabel2.setIcon(cardDefault, 9, 6, 80);
// getContentPane().add(imageLabel, BorderLayout.CENTER);
contentPane.add(mainPanel);
mainPanel.add(imageLabel);
mainPanel.add(imageLabel2);
}
public void actionPerformed(ActionEvent evt) {
imageLabel.setIcon(cardDefault);
}
public static void main(String[] args) {
MoveImageIcon moveImageIcon = new MoveImageIcon();
moveImageIcon.setVisible(true);
}
}
class ImageLabel extends JLabel implements Runnable {
private ImageIcon icon;
// private int x, y, w, h;
private int xNew, yNew, wNew, hNew;
private int xMove, yMove, xDest;
public ImageLabel() {
super();
xNew = 473;
yNew = 27;
wNew = 71;
hNew = 96;
xMove = 0;
yMove = 0;
xDest = 0;
}
public void setIcon(ImageIcon icon, int xMove, int yMove, int xDest) {
this.xMove = xMove;
this.yMove = yMove;
this.xDest = xDest;
// x = xNew;
// y = yNew;
// w = wNew;
// h = hNew;
this.icon = icon;
changeImage();
}
public void paintComponent(Graphics g) {
super.paintComponents(g);
// xNew = 200;
// yNew = 200;
// wNew = 71;
// hNew = 96;
Image img = getToolkit().getImage("table.jpg");
MediaTracker mt = new MediaTracker(this);
mt.addImage(img, 0);
try {
mt.waitForAll();
} catch (InterruptedException e) {
//nothing
}
g.drawImage(img,0,0,this);
g.drawImage(icon.getImage(),xNew, yNew, wNew, hNew, null);
}
private void changeImage() {
Thread t = new Thread(this);
t.start();
}
public void run() {
do {
xNew = xNew - xMove;
yNew = yNew + yMove;
repaint();
try {
Thread.sleep(10);
}
catch (Exception ex) {
}
} while (xNew > xDest);
repaint();
}
}