2

我不确定这是否是一个简单的问题要在这里回答,只是因为我使用的是普林斯顿大学编写的 Standard Draw 课程,而且我不确定它是否是全球知名的课程。

但我非常感谢那些熟悉 StdDraw 库的人提供的任何反馈。

我想做的是相当直截了当。检查用户的鼠标是否单击了我绘制的输入框,如果单击,则清除现有文本(简单地说“输入”)以使String.

这是到目前为止的样子:

public boolean handleClick(double x, double y) {
 if(!super.handleClick(x,y)){
 value = false;}
 else {
   if(highlighted){
       value = true;
       StdDraw.textLeft(xCentre+0.005,yCentre," ");} //Add the label
   else{
     value = false;}
 }
   return value; //I handled it. Nobody else should.}
}//handleClick

super.handleClick(x,y)只是超类中绘制盒子尺寸的一个方法:

 public void draw(){ 
  StdDraw.setPenColor(StdDraw.WHITE);
  StdDraw.filledRectangle(xCentre,yCentre,halfWidth,halfHeight);
  StdDraw.setPenColor(StdDraw.BLACK);
  StdDraw.setPenRadius(); //Default thin line.
  StdDraw.rectangle(xCentre,yCentre,halfWidth,halfHeight);
 }

value只是这个类的一个实例变量,true如果满足所有条件,它将返回:

private boolean value;

highlighted是一个boolean来自超类的实例变量,它简单地说明盒子是输入框还是输出框。

我的主要问题是,这条线

StdDraw.textLeft(xCentre+0.005,yCentre," ");String清除现有文本并使用 StdDraw 创建空白的正确方法?因为它没有清除这条线,但也许我的代码中的其他地方有一个我丢失的错误,这条线应该可以工作吗?

4

0 回答 0