Как обнаружить нажатия клавиш одним методом в java? - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь нарисовать 6 цветов, 10 фигур, изображение в формате JPEG и 3 вещи, которые меняются при нажатии клавиши в java.

Однако я пытаюсь запрограммировать все это одним способом. Я сделал все остальное, кроме обнаружения нажатия клавиши. Я рассмотрел много примеров, но все они используют разные методы или классы, которые работают вместе, чтобы обнаружить нажатие клавиши. Но как мне обнаружить нажатия клавиш и одновременно изменить картинки / изображения в JPanel всего одним способом.

Я пытался написать какой-то код, но он не работает ( на JPanel / экране ничего не отображается) Вот мой код:

public void paint(Graphics g){

      g.setColor(Color.WHITE);
      g.fillRect(0, 0, 1000, 1000);

      BufferedImage photo = null;
      try 
      {
       File file = new File("holiday.jfif");
       photo = ImageIO.read(file);
      } 
      catch (IOException e)
      {
       g.drawString("Problem reading the file", 100, 100);
      }
      g.drawImage(photo,0,0,800,800,null);

      g.setColor(Color.BLACK);
      g.fillRect(120,300,100,100 );
      g.setColor(Color.GREEN);
      g.fillOval(270,130,50,100 );
      g.setColor(Color.BLUE );
      g.fillRect(350,200,100,150 );
      g.setColor(Color.PINK);
      g.fillOval(460, 270, 50, 50);

      g.setColor(Color.GRAY);
      g.fillArc(500, 300, 110, 100, 5, 150);
      g.setColor(Color.YELLOW);
      g.fillRect(500,450,100,100);
      g.setColor(Color.YELLOW);
      g.fillOval(550,500,100,100);
      int[] xpoints = {50,150,20,180};
      int[] ypoints = {500,500,550,550};
      g.setColor(Color.BLACK);
      g.drawPolygon(xpoints,ypoints,4);
      int[] xpoint = {250,220,380,350};
      int[] ypoint = {500,550,550,500};
      g.drawPolygon(xpoint,ypoint,4);
      int[] x = {600,500,700};
      int[] y = {20,100,100};
      g.drawPolygon(x,y,3);
      g.setColor(Color.ORANGE);
      g.fillRect(10,50,220,30);
      g.fillRect(115,80,20,100);

      Scanner input = new Scanner(System.in);
      String press;
      boolean stop = false;  
      while(!stop)
      {
       //Scanner input = new Scanner(System.in);
       press = input.next();

       if (press != null)
       {
        g.clearRect(115,80,20,100);
        g.clearRect(500,450,100,100);
        stop = true;
       }
     }


   }
...