首页 > 解决方案 > 使我的椭圆成为按钮以在同一窗口上显示一些数据?

问题描述

你好,我试图让我的椭圆形一个按钮,这样当我双击它时,它应该显示数据的快照视图。我创建了一些代码,但它不是 100% 的功能,如果有人可以帮助我会很好。

代码:

boolean drawText = false;
void setup(){
  size(800,600);
}
void draw(){
  background(0);
  noStroke();
  fill(245, 27, 27, 151);
  ellipse(110,110,120,120);
  if(dist(mouseX,mouseY,110,110)<60){
    cursor(HAND);
  } else {
    cursor(ARROW);
  }
  if (drawText) {
    fill(#FFFF00);
    text("Hi!", 110, 110);
  }
}
void mousePressed() {
  if (mouseButton == LEFT && dist(mouseX,mouseY,110,110)<60) {
    drawText = true;
  } else if (mouseButton == LEFT && dist(mouseX,mouseY,110,110)<60){
   drawText = false; 
  }
}

标签: javaprocessing

解决方案


我不确定我是否以正确的方式理解您的问题,但从它和您在它下面的评论来看,我理解您希望在单击按钮时显示文本并在再次单击按钮时隐藏文本。如果是这样,此代码应该适合您:

boolean drawText = false;
void setup(){
  size(800,600);
}
void draw(){
  background(0);
  noStroke();
  fill(245, 27, 27, 151);
  ellipse(110,110,120,120);
  if(dist(mouseX,mouseY,110,110)<60){
    cursor(HAND);
  } else {
    cursor(ARROW);
  }
  if (drawText) {
    fill(#FFFF00);
    text("Hi!", 110, 110);
  }
}
void mousePressed() {
  if (mouseButton == LEFT && dist(mouseX,mouseY,110,110)<60) {
    drawText = !drawText;
  }
}

因此,当现在单击按钮时,drawText 变为相反:如果是true之前,则设置为,反之亦然false。这样,单击按钮使文本可见,再次单击它会使文本再次不可见。

编辑:另一种理解你的问题的方式

理解您的问题的另一种方法是,您希望仅在双击按钮后才显示文本。在这种情况下,您可以使用evt.getCount()里面的函数mousePressed。单击后返回 1,双击后返回 2,依此类推。这是一些使该工作起作用的代码:

boolean drawText = false;
void setup(){
  size(800,600);
}
void draw(){
  background(0);
  noStroke();
  fill(245, 27, 27, 151);
  ellipse(110,110,120,120);
  if(dist(mouseX,mouseY,110,110)<60){
    cursor(HAND);
  } else {
    cursor(ARROW);
  }
  if (drawText) {
    fill(#FFFF00);
    text("Hi!", 110, 110);
  }
}
void mousePressed(MouseEvent evt) {
  if (evt.getCount() == 2) {  // detect double click
    if (mouseButton == LEFT && dist(mouseX,mouseY,110,110)<60) {
      drawText = !drawText;
    }
  }
}

推荐阅读