我无法弄清楚如何在paintComponent中重绘修改过的变量

时间:2016-07-18 01:54:57

标签: java variables paintcomponent

numpy.einsum

在按下按钮并更改变量值后调用int club_num = 0; private int angle = 90; private int startX = 72; private int startY = 329; private double endX = startX + clublength * Math.sin(Math.toRadians(angle)); private double endY = startY + clublength * Math.cos(Math.toRadians(angle)); @Override public void paintComponent( Graphics g ){ super.paintComponent( g ); g.setColor( Color.BLACK ); g.drawLine( startX, startY, (int)endX, (int)endY ); //this is what i want to change } public class Keys extends KeyAdapter { @Override public void keyPressed( KeyEvent e ){ if ( e.getKeyCode() == KeyEvent.VK_LEFT ){ club_num--; //ultimately changes endX and endY if (club_num < 0) club_num = club[0].length-1; //ultimately changes endX and endY repaint(); } else if ( e.getKeyCode() == KeyEvent.VK_RIGHT ){ club_num++; //ultimately changes endX and endY if (club_num > club[0].length-1) club_num = 0; //ultimately changes endX and endY repaint(); } } } 方法时,我希望行repaint()根据更新的变量参数[g.drawLine( startX, startY, (int)endX, (int)endY )]进行更改。

1 个答案:

答案 0 :(得分:0)

找到答案!

我将此添加到我的脚本中并将变量更改为private double endX/endY,并添加了一个计时器对象。

    public class TimerListener implements ActionListener {
      public void actionPerformed(ActionEvent e) {
           calcEndX( clublength, angle );
           calcEndY( clublength, angle );
      }
   }

   public void calcEndX( int clublength, int angle ){
       endX = startX + clublength * Math.sin(Math.toRadians(angle));
   }
   public void calcEndY( int clublength, int angle ){
       endY = startY + clublength * Math.cos(Math.toRadians(angle));
   }
    public double getEndX(){
       return endX;
   }
    public double getEndY(){
       return endY;
   }