Hallo
Dieses Programm bewegt eine Kugel nach rechts. Diese Kugel wird mit Mausklicks immer wieder nach rechts verschoben.
Ich möchte aber das die Kugel nach einem Mausklick nach rechts fährt, also nicht das ich 10x mit der Maus klicke damit sich die Kugelposition ändert.
Ich hoffe, dass mir jemand helfen kann
Dieses Programm bewegt eine Kugel nach rechts. Diese Kugel wird mit Mausklicks immer wieder nach rechts verschoben.
Ich möchte aber das die Kugel nach einem Mausklick nach rechts fährt, also nicht das ich 10x mit der Maus klicke damit sich die Kugelposition ändert.
Java:
package tt.test.pacman;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
public class GlassPaneDemo {
static private MyGlassPane myGlassPane;
private static void createAndShowGUI() {
JFrame frame = new JFrame("GlassPaneDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCheckBox changeButton = new JCheckBox("Glass pane \"sichtbar\"");
changeButton.setSelected(false);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(changeButton);
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
myGlassPane = new MyGlassPane(changeButton, menuBar, frame.getContentPane());
changeButton.addItemListener(myGlassPane);
frame.setGlassPane(myGlassPane);
// Show the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Java:
package tt.test.pacman;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JMenuBar;
@SuppressWarnings("serial")
class MyGlassPane extends JComponent implements ItemListener, Runnable {
Point point;
int x = 10;
int y = 10;
// React to change button clicks.
public void itemStateChanged(ItemEvent e) {
setVisible(e.getStateChange() == ItemEvent.SELECTED);
}
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.RED);
g.fillOval((point.x + x++), point.y - 10, 40, 40);
}
public void setPoint(Point p) {
point = p;
}
public MyGlassPane(AbstractButton aButton, JMenuBar menuBar, Container contentPane) {
CBListener listener = new CBListener(aButton, menuBar, this, contentPane);
addMouseListener(listener);
addMouseMotionListener(listener);
}
@Override
public void run() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while (true) {
x++;
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException ex) {
}
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
}
Java:
package tt.test.pacman;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JMenuBar;
@SuppressWarnings("serial")
class MyGlassPane extends JComponent implements ItemListener, Runnable {
Point point;
int x = 10;
int y = 10;
// React to change button clicks.
public void itemStateChanged(ItemEvent e) {
setVisible(e.getStateChange() == ItemEvent.SELECTED);
}
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.RED);
g.fillOval((point.x + x++), point.y - 10, 40, 40);
}
public void setPoint(Point p) {
point = p;
}
public MyGlassPane(AbstractButton aButton, JMenuBar menuBar, Container contentPane) {
CBListener listener = new CBListener(aButton, menuBar, this, contentPane);
addMouseListener(listener);
addMouseMotionListener(listener);
}
@Override
public void run() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while (true) {
x++;
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException ex) {
}
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
}
Ich hoffe, dass mir jemand helfen kann
Zuletzt bearbeitet: