0

これは私のプログラムです:

サブクラス:

import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import java.util.Scanner;

public class abc extends JPanel {

    public void paintComponent(Graphics g) {
        Scanner input = new Scanner(System.in);
        super.paintComponent(g);

        this.setBackground(Color.WHITE);
        int a, b;
        System.out.print("input a: ");
        a = input.nextInt();
        a = b;
        g.setColor(Color.BLUE);
        g.fillOval(150, 40, a, b);
    }
}

メインクラス:

import java.awt.Color;
import javax.swing.JFrame;

public class abcd {

    public static void main(String args[]) {
        JFrame frame = new JFrame("Draw");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        abc panel = new abc();
        panel.setBackground(Color.WHITE);
        frame.add(panel);
        frame.setSize(400, 200);
        frame.setVisible(true);
    }
}

出力は常に繰り返されます。3〜4回入力する必要があります。これをサブクラスとメインクラスで作ります。この問題を解決し、なぜ繰り返されるのか説明してください。

4

1 に答える 1

3

問題を引き起こしている可能性のあるコードのいくつかに気付きました:

public class abc extends JPanel{
public void paintComponent(Graphics g){
Scanner input=new Scanner(System.in);
super.paintComponent(g);

this.setBackground(Color.WHITE);
int a,b;
System.out.print("input a: ");
a=input.nextInt();

a=b;shouldn't this be b=a , maybe you did it by mistake?

g.setColor(Color.BLUE);
g.fillOval(150,40,a,b);

}

第二に、なぜ最初はabcdクラスで、またクラスで、パネルを 2 回ペイントするのabcですか?

于 2013-06-25T08:27:10.927 に答える