Java定时器&;油漆组件问题
您好,我正在尝试使一个红色框出现在JPanel的底部。我希望此框移动到屏幕的一个角落并停止,然后开始以另一种方式移动,但是我无法使框停止以下是我一直在使用的代码Java定时器&;油漆组件问题,java,swing,timer,jpanel,paintcomponent,Java,Swing,Timer,Jpanel,Paintcomponent,您好,我正在尝试使一个红色框出现在JPanel的底部。我希望此框移动到屏幕的一个角落并停止,然后开始以另一种方式移动,但是我无法使框停止以下是我一直在使用的代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.Timer; public class JavaApplication13 extends JPanel { public static void main
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
public class JavaApplication13 extends JPanel {
public static void main(String[] args) {
JFrame rough = new JFrame("Panamr");
rough.setVisible(true);
rough.setLocation(1, 1);
rough.setSize(500, 500);
rough.setContentPane(mamals);
}
public static int iomega(int x, int y) {
if (y == 1) {
diget = -5;
time.stop();
}
if (y == 0) {
diget = 5;
}
return diget;
}
static JavaApplication13 mamals = new JavaApplication13();
JavaApplication13() {
setBackground(Color.red);
}
static int oy = 400;
static int ox = 200;
static int diget;
static Timer time = new Timer(100, new ActionListener() {
public int xy = 1;
@Override
public void actionPerformed(ActionEvent e) {
iomega(ox, xy);
if (ox == 500) {
xy = 1;
}
if (ox == 0) {
xy = 0;
}
ox = ox - iomega(ox, oy);
/*if(ox!=500){
ox=ox-diget;
if(ox==0){
diget=-5;}
else {
diget=5;
}
}*/
}
});
boolean test = true;
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.black);
g.fillRect(ox, oy, 60, 60);
time.start();
repaint();
}
}
框架/面板尺寸的坐标值已关闭,您应该动态计算该值,或者使用
final
值。下一步,xy=0和xy=1应按如下方式交换:
if (ox == 400) {//this was a larger number then the panel/frame so it went offscreen
xy = 0;//swapped
}
if (ox == 0) {
xy = 1;//swapped
}
另见此。