我想通过2个按钮移动我的图片,我的问题是与另一个按钮的听众,, 我怎样才能使它正常工作?通过按钮移动图像
这是代码和图片>>
http://imageshack.us/photo/my-images/204/sw1e.png
http://imageshack.us/photo/my-images/200/sw2ni.png/
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.io.*;
public class Transformation2D extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private MyDrawingPanel drawingPanel = new MyDrawingPanel();
private MyDrawingPanel2 drawingPanel2 = new MyDrawingPanel2();
private JButton goLeft = new JButton("<--");
private JButton goRight = new JButton("-->");
private int previousX;
private int previousY;
private Image stick1;
private Image stick2;
private boolean movementFlag = false;
public Transformation2D() {
super("Walking Stickfigure");
setSize(600, 200);
previousX = 250;
previousY = 0;
setBackground(Color.WHITE);
setLayout(new BorderLayout());
add(drawingPanel, BorderLayout.CENTER);
add(drawingPanel2, BorderLayout.SOUTH);
drawingPanel2.add(goLeft);
drawingPanel2.add(goRight);
stick1 = null;
stick2 = null;
try {
stick1 = ImageIO.read(new File("sw1.png"));
stick2 = ImageIO.read(new File("sw2.png"));
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
goLeft.addActionListener(this);
goRight.addActionListener(this);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == goLeft) {
drawingPanel.repaint();
} else if (ae.getSource() == goRight) {
drawingPanel2.repaint();
}
}
public static void main(String[] args) {
Transformation2D transformation2D = new Transformation2D();
}
class MyDrawingPanel extends JPanel {
private static final long serialVersionUID = 1L;
public MyDrawingPanel() {
setBackground(Color.WHITE);
}
@Override
public void paintComponent(Graphics g) {
g.clearRect(previousX, previousY, stick1.getWidth(this), stick1.getHeight(this));
g.drawLine(0, 134, 600, 134);
previousX -= 3;
if (movementFlag) {
g.drawImage(stick1, previousX, previousY, this);
movementFlag = false;
} else {
g.drawImage(stick2, previousX, previousY, this);
movementFlag = true;
}
}
}
class MyDrawingPanel2 extends JPanel {
private static final long serialVersionUID = 1L;
public MyDrawingPanel2() {
setBackground(Color.WHITE);
}
@Override
public void paintComponent(Graphics g) {
g.clearRect(previousX, previousY, stick1.getWidth(this), stick1.getHeight(this));
g.drawLine(0, 134, 600, 134);
previousX += 3;
if (movementFlag) {
g.drawImage(stick1, previousX, previousY, this);
movementFlag = false;
} else {
g.drawImage(stick2, previousX, previousY, this);
movementFlag = true;
}
}
}
}
使我们更容易一点......你得到了什么错误,或者你有什么 – DaMainBoss
会发生什么crossposted http://www.daniweb.com/software-development/java/threads/374753 – mKorbel