我不确定这是否是一个简单的问题要在这里回答,只是因为我使用的是普林斯顿大学编写的 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
创建空白的正确方法?因为它没有清除这条线,但也许我的代码中的其他地方有一个我丢失的错误,这条线应该可以工作吗?