2016-05-21 63 views
0

我正在一個項目上工作,我對編寫.sets不斷的厭倦,所以我打算做一些方法來縮短代碼,讓它更快。我使用JButtons,JLabels和JTextFields,有沒有一種方法可以編寫一個方法來擁有.setInvisible(false)的能力;在任何這些?或者我必須爲每種類型分別使用不同的方法。謝謝!使一種方法能夠採取兩種不同的類型作爲參數

例子:

public void siv((JButton || JLabel || JTextField) input) { 
input.setVisible(false); 
} 

***編輯: 只是要清楚,我想看看是否有一種方法,Java可以理解採取一出一進,而不是需要所有三個。我試圖找到一種方式來做到這一點沒有做什麼,我已經添加下面:

private void siv(JButton input, JTextField input2, JLabel input3) { 
    input.setVisible(false); 
    input2.setVisible(false); 
    input3.setVisible(false); 
} 
+0

只能通過接口和/或繼承。但是,使用給定的語法,這是不可能的。 – Turing85

+0

好的,非常感謝! – Synergy76

+1

我明白這個問題的方式,因爲'JButton','JTextField'和'JLabel'繼承了該類的'setVisible'方法,所以您似乎需要將方法指定爲'private void siv(JComponent input)' –

回答

6

JButtonJTextField,並且JLabel繼承JComponent它具有方法setVisible,所以你可以有,需要一個方法一組JComponent並設置其可見性。

public void setVisibility(boolean visibility, JComponent... components) { 
    for(JComponent component: components){ 
    component.setVisible(visibility); 
    } 
} 
+1

你真是太棒了!這很棒! – Synergy76

+0

建立在@ sleiman-jneidi的答案上,如果你想有一個方法接受_only_你提到的三個類,你將不得不重載該方法 - 本質上寫同名的_three_方法,每個方法都採用正確類型的參數。然後,您可以將代碼本身一式三份編寫或委託給採用JComponent的私有方法。 –

相關問題