-1
Я работаю с MouseListener, в частности с MouseClick, и с изображением. Изображение перемещается вокруг панели.Переменные изображения на MouseClick
Как это сделать, чтобы при щелчке в пределах 30 пикселей от текущего местоположения изображения чередуются?
Вот моя рамка.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Rebound
{
public static void main (String[] args)
{
JFrame frame = new JFrame ("Rebound");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new ReboundPanel());
frame.pack();
frame.setVisible(true);
}
}
Вот моя панель.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ReboundPanel extends JPanel
{
private final int WIDTH = 300, HEIGHT = 100;
private final int DELAY = 20, IMAGE_SIZE = 35;
private ImageIcon image;
private Timer timer;
private int x, y, moveX, moveY;
private ImageIcon image2;
public ReboundPanel()
{
timer = new Timer(DELAY, new ReboundListener());
image = new ImageIcon("C:\\happyFace.gif");
image2 = new ImageIcon("C:\\red smiley.gif");
x = 0;
y = 40;
moveX = moveY = 3;
setPreferredSize (new Dimension(WIDTH, HEIGHT));
setBackground (Color.black);
addMouseListener(new MousePressListener());
timer.start();
}
public void paintComponent (Graphics page)
{
super.paintComponent (page);
image.paintIcon (this, page, x, y);
}
class MousePressListener implements MouseListener
{
public void mousePressed(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {
image = image2;
}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
private class ReboundListener implements ActionListener
{
//--------------------------------------------------------------
// Updates the position of the image and possibly the direction
// of movement whenever the timer fires an action event.
//--------------------------------------------------------------
public void actionPerformed (ActionEvent event)
{
x += moveX;
y += moveY;
if (x <= 0 || x >= WIDTH-IMAGE_SIZE)
moveX = moveX * -1;
if (y <= 0 || y >= HEIGHT-IMAGE_SIZE)
moveY = moveY * -1;
repaint();
}
}
}
Что вопрос? – lukecampbell
Я пытаюсь сделать так, чтобы, щелкнув в пределах 30 пикселей от текущего местоположения, изображения чередуются. – user1349999
Итак, я понял способ чередования изображений. Я думаю, что есть другие. Я добавил: private boolean color; И я изменил свое mouseClicked на: общественного ничтожной mouseClicked (MouseEvent события) { \t \t если (цвет == TRUE) { \t \t изображения = новый ImageIcon ("C: \\ красного smiley.gif"); \t \t color = false; \t} \t else { \t image = new ImageIcon ("C: \\ happyFace.gif"); \t color = true; } – user1349999