我有一个面板,带有一堆标签,位于框架中间。由于其位置原因,内部的一些标签在面板内看不到。
这是一个可以更好地看到它的表示(蓝色边框是面板;里面的绿色框是可见的标签,而红色框则不是)
for(int x = 0 ; x < 8 < x++){
for(int y = 0; y < 11 < y++){
Cell block = new Cell(); //Cell is a class that extends jlabel
//code for setting block location here
blockArray[x][y] = block;
blockArray[x][y].setVisible(true);
this.add(blockArray[x][y]);
}
}
如何确定标签(在我的表示中)是绿色还是红色?因为我的目标是将绿色的设置为 setVisible(true),将红色的设置为 setVisible(false)。
我尝试使用 isShowing 和 isDisplayable,但通过用类似这样的内容替换 setVisible(boolean) 行,两者都返回 false...
if(block[x][y].isShowing()) block[x][y].setVisible(true);
else{block[x][y].setVisible(false)}
Cell 对象在其构造函数内有一个 setVisible(false) ,很确定它不会影响我的目标,因为我在实例化它们后将它们设置为 true,但我可能是错的。
最佳答案
如果它们有标准尺寸,您可以计算哪些标签可见,哪些标签不可见(如果您的框架可调整大小,您始终可以使用 JFrame.getSize() 获取其尺寸。如果标签由于某种原因尺寸不同,请使用 JLabel .getSize() 和 JLabel.getLocation() 计算标签是否显示在框架上。
关于java - 如何判断一个组件是否可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33708418/