我不确定如何通过主函数中的条件重绘JFrame

时间:2019-05-11 10:41:18

标签: java jframe jpanel japplet

我刚刚开始使用Java开发棒球游戏。但是我很难重击罢工,球,外线。 我制作了默认面板,只显示了S,B,O字和一些黑色填充的圆形窗格。 我要制作的是在处理主游戏模拟器时更改此圆圈的颜色。 我不确定如何根据主函数的条件重绘Jframe

public class baseBallSimul extends JFrame{

   public baseBallSimul() {
       super("ContentPane Example");
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setTitle("SBOExample");
       setSize(600,600);
       setBackground(Color.red);
       JPanel sbo=new JPanel();                
       Object[] sboList=new Object[11];


      //Todo initialize Jpanel as gridpanel(3,4) and fills it with CirclePanel 
      redraw(sboList,sbo);
      setVisible(true);
   }

然后我创建了CirclePanel类来管理circlePanel

   class CirclePanel extends JPanel {
        int centerX, centerY, radius;
        Color circle_color=Color.red;
        public CirclePanel(int centerX, int centerY, int radius, Color c) {
            .......
            revalidate();
            repaint();
        }
        public void setCircle(int centerX, int centerY, int radius, Color c) {
            this.centerX = centerX;
            ......
            this.circle_color = c;
            revalidate();
            repaint();
        }


        protected void paintComponent(Graphics g) {

            super.paintComponent(g);
            g.setColor(this.circle_color);
            g.fillOval(centerX, centerY, radius*2, radius*2);
        }
    }

我想知道的是如何管理此董事会以立即做出反应

   public static void main(String[] args) {
      JFrame frame=new baseBallSimul();
               .....
              //game starts
              .......
      //somcondition occured
      if(strike)
          //change one of S circle as red
               .....
   }

我可以考虑解决什么问题?

0 个答案:

没有答案