Я пишу программу, которая рисует объект в разных состояниях. Первый - это серый прямоугольник, второй - изображение, а третий - более легкий прямоугольник с текстом в нем. Я написал код как 3 класса. У меня проблема с моим классом компонентов. По какой-то причине он продолжает зацикливаться. Когда я вхожу в 1, он отлично работает. Когда я вхожу в 2, он запрашивает мой ввод 4 раза, прежде чем он покажет изображение. Когда я вхожу в 3, он спрашивает дважды, прежде чем он покажет более светлый прямоугольник, но у него нет текста.Мой код, кажется, зацикливается, и я не знаю, почему
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Scanner;
import javax.swing.JComponent;
public class ImageComponent extends JComponent {
/**
*
*/
private static final long serialVersionUID = 1L;
public int status;
public int getInput(){
Scanner userinput = new Scanner(System.in);
System.out.println("Select the state <1-rectangle, 2-image, 3-rectangle with text>");
int state=userinput.nextInt();
//userinput.close();
return state;
}
public void paintComponent(Graphics g){
Graphics2D g2 =(Graphics2D) g;
if (getInput() ==1){
ImageMaker rectangle = new ImageMaker(0,0,500,400);
g2.setColor(Color.GRAY);
rectangle.draw(g2);
}
else if (getInput() ==2){
Image img1 = Toolkit.getDefaultToolkit().getImage("balloon.gif");
ImageMaker image = new ImageMaker(img1, 0, 0, this);
image.draw(g2);
}
else{
ImageMaker rectangle = new ImageMaker(0,0,500,400);
g2.setColor(Color.LIGHT_GRAY);
rectangle.draw(g2);
g2.drawString("Your Text Here", 500/2, 400/2);
}
}
}
Как вы вызывающие эти методы? –