如何找出屏幕上显示的java组件

saj*_*jad 8 java user-interface swing

我想知道屏幕上是否有JPanel.这并不意味着该isVisible()方法可以用于这种情况.我的意思是我想知道之前启动的组件是否是我主面板上的组件之一.

编辑和更多解释:我之前在我的程序中启动了几个面板,并根据需要在我的表单上使用它们.我现在想知道jpanel1现在在我的表单上出现的任何面板.

例:

public class GUI extends JFrame() {

    private JPanel1, jPanel2;

    public static void main(String[] args) {
        GUI gui = new GUI();
        jPanel1 = new JPanel();
        jPanel2 = new JPanel();
        gui.setContentpane(jPanel1);
        gui.setVisible(true);
    }

}
Run Code Online (Sandbox Code Playgroud)

现在jPanel1在屏幕上jPanel2可见不可见.我怎么能找到这个?

saj*_*jad 12

经过调查我发现这个方法表示该组件是否显示在屏幕上:

isDisplayable()

在我的例子中:

jPanel1.isDisplayable() //返回true

jPanel2.isDisplayable() //返回false

像这一样简单!

  • 在我的应用程序中,如果组件不在屏幕上,则此方法_NOT_ 返回 false。正确的调用方法是 [`Component.isShowing()`](https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html#isShowing--)。我这么说,但我仍然不能确定 `isShowing()` 是正确的方法,但我知道 `isDisplayable()` 是不正确的。一旦有人验证了这一点并更新了答案,我将取消我的反对票。 (2认同)

Aks*_*bhu 5

jPanel1.isVisible()==true jPanel1.isVisible()==false

面板 jPanel1.isShowing()也有效