第二个按钮对象覆盖第一个按钮对象(处理)

时间:2017-10-21 19:56:43

标签: java button processing

enter image description here HeJ小鼠!

我是处理新手,所以如果我的问题不够清楚,我很抱歉。

我正在制作一种烤面包机,必须在点击开始按钮时启动,并在单击停止按钮时弹出面包。我制作了一个按钮类,并在我的主程序中创建了一个新的按钮对象。为了测试,我在单击开始按钮时将背景颜色从白色变为红色。

启动按钮有效,但现在我正在尝试创建一个新的按钮对象(STOP按钮),但是当我创建一个停止按钮对象时,它会覆盖“开始”按钮对象。首先,我可能是因为他们的开始按钮是停止按钮下面的位置,但那不是它。一旦我处理,图像加载也需要永远。

我希望你能帮助我:)

  int s = 0; 
  int m = 0; 


  Button stop_button;
  Button on_button;
  int clk = 1;



  void setup() 
  {
      on_button = new Button("Start", 230, 300, 60, 30);
      stop_button = new Button("Start", 230, 300, 60, 30);
      size(600, 600);
      background(255, 255, 255);


  }


  void draw () {
    stroke(240, 242, 179);    
    fill(240, 242, 179);
    rect(190,150,210,130, 30);

    stroke(126, 191, 167);
    fill(126, 191, 167);
    rect(170,200,250,170, 30); 



//BUTTON CODE
    if (on_button.MouseIsOver()) {
    }
    on_button.Draw();
  }


  void mousePressed()
  {
    if (on_button.MouseIsOver()) 
      print("Clicked: ");
      println(clk++);
      time(); 
    }

  }

  void time () 
  {
     background(255, 0, 0); 

  }

// BUTTON CLASS

class Button {
  String label; // button label
  float x;      // top left corner x position
  float y;      // top left corner y position
  float w;      // width of button
  float h;      // height of button

  // constructor
  Button(String labelB, float xpos, float ypos, float widthB, float heightB) {
    label = labelB;
    x = xpos;
    y = ypos;
    w = widthB;
    h = heightB;
  }

  void Draw() {
    fill(218);
    stroke(141);
    rect(x, y, w, h, 10);
    textAlign(CENTER, CENTER);
    fill(0);
    text(label, x + (w / 2), y + (h / 2));
  }

  boolean MouseIsOver() {
    if (mouseX > x && mouseX < (x + w) && mouseY > y && mouseY < (y + h)) {
      return true;
    }
    return false;
  }
}

1 个答案:

答案 0 :(得分:1)

我并不完全理解你的代码,因为你永远不会对点击做出反应,而且你从不画第二个按钮。

如果我是你,我会break your problem down into smaller steps并一次采取一个步骤。例如,您是否可以获得一个非常基本的示例运行,该示例显示单个按钮,只要您单击它就会向控制台输出消息?

从那里开始,可能会在另一个位置添加第二个按钮 ,当您单击它时会打印另一个消息。在你继续前进之前要完美地工作。

当你开始工作时,然后更改你的第一个草图,以便在单击按钮时更改背景颜色。最后,您可以在单击第一个按钮后组合上述所有内容以显示第二个按钮。

提示:您可能希望使用boolean变量来表示当前显示的按钮。但就像我说的那样,你最好的选择是开始更简单,并以更小的步骤向前迈进。