如何使用单个语句setVisible(true或false)多个组件

时间:2016-03-17 05:23:17

标签: java swing

我正在使用netbeans JFrame制作商店库存应用。在那里,我使用了近50 + jLabel。我想要做的是当有人点击按钮时,按钮动作中的所有组件都应该是setVisible true或False。我必须写多行才能做到这一点,这使我的代码看起来很复杂。

我想要的代码很短。有没有办法这样做? 我有多个MouseClicked事件。 以下是示例代码:

private void jLabel15MouseClicked(java.awt.event.MouseEvent evt) {                                      

    jScrollPane1.setVisible(true);
    jLabel42.setVisible(false);
    jLabel43.setVisible(false);
    jLabel44.setVisible(false);      
    jLabel48.setVisible(false);
    jLabel40.setVisible(false);
    jLabel20.setVisible(false);
    jLabel19.setVisible(false);
    jLabel18.setVisible(false);
    jLabel17.setVisible(false);
    jLabel22.setVisible(false);
    jLabel21.setVisible(true);
    jLabel37.setVisible(false);
    jLabel38.setVisible(false);
    jLabel39.setVisible(false);

}                                

3 个答案:

答案 0 :(得分:2)

将它们放入一个容器中,使容器可见/不可见

此外,您可以考虑使用CardLayout

答案 1 :(得分:2)

一种方法是你可以将所有标签放在数组中然后你可以循环抛出它并改变可见性

创建一个jlabels数组

JLabel[] labels=new JLabel[]{jLabel1,jLabel2};

然后循环并更改可见性

private void jLabel15MouseClicked(java.awt.event.MouseEvent evt) {  

    for (JLabel label : labels) {
           label.setVisible(false); // use your logic to set visibility 
    }

}

答案 2 :(得分:1)

试试这个   使用SwingUtilities.getWindowAncestor(Component)查找当前组件的父窗口。然后你可以在上面调用setVisible。