2016-07-11 47 views
0

我想要一個JTextField在用戶選擇JComboBox列表中的「Extra」時出現,否則將隱藏。但是,當用戶選擇「額外」時,JTextField不會出現,但是如果我縮小窗口並再次放大,它就會出現。在這樣做之後,它正在正常工作,只是第一次沒有出現。爲什麼它的行爲如此?任何解決方案?帶有JComboBox的JTextField無法正常工作

這裏是我的代碼:

getCmbJtocsv_C_8().addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    { 

     input3 = (String)adaptor.getCmbJtocsv_C_8().getSelectedItem(); 
     adaptor.getTxtJtocsv_C_8().setVisible(false); 

     if(input3.equals("extra")){ 
      adaptor.getTxtJtocsv_C_8().setVisible(true); 
     } 
} 

我已經改變了字符串比較,我仍然得到同樣的結果。

+0

這是你的問題。輸入3 ==「額外」。你需要學習如何比較(字符串)對象 – Stultuske

+0

我也試過input3.equals(「額外」),仍然得到相同的結果。 – mariz

+1

可能的原因可能是您使用的佈局管理器。完整的代碼或可運行的代碼可以幫助您清楚地解決問題。 – mfidan

回答

1

默認情況下,Swing組件的大小爲(0,0)。組件的大小/位置由佈局管理器在打包或顯示框架時確定。

所以我想,因爲你開始與文本字段不可見其父面板的大小不包括文本字段。調整框架的大小時,會顯示文本字段,因爲它的大小和麪板的大小會重新計算。

現在已經計算了文本字段的大小,因此您可以根據需要切換可見性。

如果這沒有幫助,然後發佈SSCCE,說明問題。這是創建一個框架只有一個組合框和文本字段來演示問題。將來的所有問題都應該包含SSCCE,因爲我們無法根據幾行代碼猜測應用程序的上下文。

+0

是的,這是確切的問題在這裏。現在我改變了我的佈局到卡布局,在第一張卡的面板將是空的,在第二張卡的文本框將在那裏。然後我顯示相應的卡。現在的代碼工作正常,謝謝... – mariz

+0

@mariz,'我改變了我的佈局到卡布局' - 總是一個好主意,讓佈局經理做這項工作。 – camickr

相關問題