Java 如何在GImage上运行布尔测试
初学者问题。我想在GImage对象上运行布尔测试,但不知道如何运行。例如,如果我的GImage正在显示“image1.jpg”文件,我想执行“a”。但是如果它正在显示其他内容,我想使用“b”。这些图像是由我的程序的不同部分随机选择的。我能看到的唯一方法是创建一个占位符字符串变量,在我更改GImage时随时修改它(然后我就可以对占位符变量执行测试),但我确定这不是我想要的最好方法。例如,以下方法可行,但由于我的实际程序有很多相关的GImage对象和可能的图像,因此这种方法非常笨拙:Java 如何在GImage上运行布尔测试,java,object-properties,Java,Object Properties,初学者问题。我想在GImage对象上运行布尔测试,但不知道如何运行。例如,如果我的GImage正在显示“image1.jpg”文件,我想执行“a”。但是如果它正在显示其他内容,我想使用“b”。这些图像是由我的程序的不同部分随机选择的。我能看到的唯一方法是创建一个占位符字符串变量,在我更改GImage时随时修改它(然后我就可以对占位符变量执行测试),但我确定这不是我想要的最好方法。例如,以下方法可行,但由于我的实际程序有很多相关的GImage对象和可能的图像,因此这种方法非常笨拙: GImage
GImage image1 = new GImage("bar.jpg", 0, 0);
int var1 = 0;
GImage image2 = new GImage("sunset.jpg", 100, 0);
int var2 = 1;
GImage image3 = new GImage("bar.jpg", 200, 0);
int var3 = 0;
if (var1 == 0) {
// returns true
}
if (var2 == 0) {
// returns false
}
if (var3 == 0) {
// returns true
}
我只是在学习编程,所以可能有一个明显的解决方案,但我似乎找不到。如果有一个方法返回GImage显示的文件名,这似乎可以满足我的需要,但我找不到这样的方法。感谢您的帮助。您可以在自己的类中包装图像,该类包含适当的属性 又快又脏:
class MyImage
{
private String resourceName;
private GImage gImage;
public MyImage(String resourceName,int x, int y){
this.resourceName = resourceName;
this.gImage = new GImage(resourceName,x,y)
}
public String getResourceName()
{
return resourceName;
}
//.
//.
//.
}
public static final String RES_IMG_SUNSET = "sunset.jpg";
//.
//.
//.
MyImage image1 = new MyImage("bar.jpg", 0, 0);
MyImage image2 = new MyImage(RES_IMG_SUNSET, 100, 0);
MyImage image3 = new MyImage("bar.jpg", 200, 0);
if(image2.getResourceName().equals(RES_IMG_SUNSET))
{
}
您可能希望具有某种唯一的资源名称,因此可以使用规范化、规范化的文件名或URI。另一种方法是为这些名称定义一个全局常量,如上面的示例所示。当然,GImage必须支持这种格式。您可以在自己的类中包装图像,该类包含适当的属性 又快又脏:
class MyImage
{
private String resourceName;
private GImage gImage;
public MyImage(String resourceName,int x, int y){
this.resourceName = resourceName;
this.gImage = new GImage(resourceName,x,y)
}
public String getResourceName()
{
return resourceName;
}
//.
//.
//.
}
public static final String RES_IMG_SUNSET = "sunset.jpg";
//.
//.
//.
MyImage image1 = new MyImage("bar.jpg", 0, 0);
MyImage image2 = new MyImage(RES_IMG_SUNSET, 100, 0);
MyImage image3 = new MyImage("bar.jpg", 200, 0);
if(image2.getResourceName().equals(RES_IMG_SUNSET))
{
}
您可能希望具有某种唯一的资源名称,因此可以使用规范化、规范化的文件名或URI。另一种方法是为这些名称定义一个全局常量,如上面的示例所示。当然,GImage必须支持这种格式。什么是GImage?有API文档的链接吗?@JB Nizet什么是GImage?有API文档的链接吗?@JB Nizet不客气。另一种可能是从
GImage
派生您的MyImage
类,并使用该resourceName对其进行扩展以实现相同的效果。这两种方法各有优缺点,不客气。另一种可能是从GImage
派生您的MyImage
类,并使用该resourceName对其进行扩展以实现相同的效果。这两种方法各有优缺点。