0

これは私のコードです。問題は、実行時に JOptionPane に問題があることです。

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class MoveTyper extends JFrame
{
int Location[] = {40, 40};
public static void main (String args[])
{
    new MoveTyper();
}

public MoveTyper() 
{
    super("typetomove");
    setSize(800, 450);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void paint(Graphics g)
{
    System.out.println("poop");
    g.setColor(Color.BLUE);


        g.fillRect(Location[0], Location[1], 20, 20);

        String Axis = JOptionPane.showInputDialog("Move by X or by Y? If you would like to quit, type cancel");

            int Movement = Integer.parseInt(JOptionPane.showInputDialog("How Many would you like to move up from"));
            if(Axis.equalsIgnoreCase("X"))
            {
                Location[0] = Location[0] + Movement;
            }
            else if(Axis.equalsIgnoreCase("cancel"))
            {

            }
            else
            {
                Location[1] = Location[1] + Movement;


    }

    JOptionPane.showMessageDialog(null, "You have quit. GOOD JOB. YOU SMELL");


}

実行すると、ループのように JOptionPane がポップアップし続けます (1 つがもう 1 つ重なって表示されます)。問題が見つからないようです。

4

1 に答える 1

0

コード from showInputDialog()toはメソッド内にあってshowMessageDialog()はなりませんpaint()。それを新しいメソッドに移動します。

public void showDialog() {
    String Axis = JOptionPane.showInputDialog("Move by X or by Y? If you would like to quit, type cancel");

    int Movement = Integer.parseInt(JOptionPane.showInputDialog("How Many would you like to move up from"));
    if(Axis.equalsIgnoreCase("X"))
    {
        Location[0] = Location[0] + Movement;
    }
    else if(Axis.equalsIgnoreCase("cancel"))
    {

    }
    else
    {
        Location[1] = Location[1] + Movement;


    }
    JOptionPane.showMessageDialog(null, "You have quit. GOOD JOB. YOU SMELL");
}

あなたの場合、コンストラクターからこのメソッドを呼び出します

public MoveTyper() 
{
    super("typetomove");
    setSize(800, 450);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    showDialog();
}

したがって、paint()メソッドは次のようになります

public void paint(Graphics g)
{
    System.out.println("poop");
    g.setColor(Color.BLUE);
    g.fillRect(Location[0], Location[1], 20, 20);
}
于 2013-09-22T17:13:30.147 に答える