Java 程序中输入错误的原因
这是我的节目: 子类:Java 程序中输入错误的原因,java,swing,Java,Swing,这是我的节目: 子类: 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 =
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次。
我把它分为子类和主类。
请帮助解决此问题,并解释它重复出现的原因?我注意到您的代码中很少有可能导致此问题的地方:
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<代码>这不应该是b=a吗,也许是你做错了?
g.setColor(Color.BLUE);
g.fillOval(150,40,a,b);
}
其次,为什么要在面板上画两次,第一次是在
abc
类中,第二次是在abc
类中?我注意到您的代码中有一些可能导致问题的地方:
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<代码>这不应该是b=a吗,也许是你做错了?
g.setColor(Color.BLUE);
g.fillOval(150,40,a,b);
}
其次,为什么要在面板上绘制两次,第一次是在
abc
类中,第二次是在abc
类中?为什么要将GUI与CLI混合使用?程序的输入应该来自图形输入控件,如JTextField
。它重复的原因可能与您不控制重绘过程有关。由于各种原因,重绘可能随时发生……我建议您花点时间进行通读1)对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。2) 不要设置顶级容器的大小。而是布局内容&调用pack()
。3) 请在句子开头加一个大写字母。也可以用大写字母表示I,缩写和首字母缩略词如JEE或WAR。这使人们更容易理解和帮助。循环应该有助于您为什么要将GUI与CLI混合使用?程序的输入应该来自图形输入控件,如JTextField
。它重复的原因可能与您不控制重绘过程有关。由于各种原因,重绘可能随时发生……我建议您花点时间进行通读1)对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。2) 不要设置顶级容器的大小。而是布局内容&调用pack()
。3) 请在句子开头加一个大写字母。也可以用大写字母表示I,缩写和首字母缩略词如JEE或WAR。这使人们更容易理解和帮助。切勿在paintComponent内使用扫描仪,切勿在paintComponent内创建任何内容切勿在paintComponent内使用扫描仪,切勿在paintComponent内创建任何内容