2

こんにちは、JPanel の下部に赤いボックスを表示しようとしています。このボックスが画面の 1 つの隅に移動して停止し、反対方向に移動し始めることを望みますが、ボックスを停止させることができませんでした以下は私が取り組んできたコードです

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();
    }
}
4

1 に答える 1

2

フレーム/パネルサイズの調整がオフになっている場合、これを動的に計算するか、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
        }  
于 2012-07-11T09:01:24.423 に答える