java - 如何判断一个组件是否可见?

标签 java swing jlabel jcomponent

我有一个面板,带有一堆标签,位于框架中间。由于其位置原因,内部的一些标签在面板内看不到。

这是一个可以更好地看到它的表示(蓝色边框是面板;里面的绿色框是可见的标签,而红色框则不是)

enter image description here 标签在 for 循环内实例化,如下所示......

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/

相关文章:

java ;多个 MVC 和 Swing 关系最佳实践?

java - 当你有JLabel背景时如何将Jbuttons设置到特定位置: code below

java - 如何用数字更新 JLabels

java - 尝试读取文件并将其值添加到 JFrame 时出现问题

java - 我应该把工作线程放在哪里

用于显示始终全屏游戏的Java框架?

java - 如何在 JLabel 中的文本前添加空格?

java - 将 JFileChooser 限制到某个目录

java - 给定多边形的坐标求长度

java - 删除 JButton 的边框