2016-03-17 42 views
1

我正在使用netbeans JFrame來存儲庫存應用程序。在那裏我使用了近50 + jLabels。我想要做的是當有人點擊按鈕時,按鈕操作中的所有組件應該是setVisible true或False。我必須寫多行才能做到這一點,這使我的代碼看起來很複雜。如何使用單一語句設置可見(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); 

}         
+0

創建一個標籤數組,然後使用循環或者你可以使用'getComponents()'方法 –

+0

把它們放在一個容器中,使容器可見/不可見 – MadProgrammer

+0

不,我不能,因爲有一些標籤是真的,有些在每個MouseClicke事件上都是false –

回答

2

的一種方式,你可以把所有的標貼在數組那麼你可以循環扔掉它,改變知名度

創建的JLabel的陣列

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 
    } 

} 
+1

非常感謝你爲我們尋找斧頭的工作。再次感謝 –

+0

祝你好運...... –

2

將它放到一個容器中,使容器可見/不可見

此外,您可以考慮使用一個

2

試試這個 使用SwingUtilities.getWindowAncestor(組件),找到當前組件的父窗口。然後你可以調用setVisible。

相關問題