Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java定时器&;油漆组件问题_Java_Swing_Timer_Jpanel_Paintcomponent - Fatal编程技术网

Java定时器&;油漆组件问题

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

您好,我正在尝试使一个红色框出现在JPanel的底部。我希望此框移动到屏幕的一个角落并停止,然后开始以另一种方式移动,但是我无法使框停止以下是我一直在使用的代码

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
        }  
另见此。