2016-07-11 9 views
0

ユーザがJComboBoxのリストで "Extra"を選択し、それ以外の場合は非表示にすると、JTextFieldが表示されます。しかし、ユーザーが "余分"を選択しているときに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

ここに問題があります。 input3 == "余分な"。あなたは(String)オブジェクトを比較する方法を学ぶ必要があります – Stultuske

+0

私はinput3.equals( "余分")も試みましたが、同じ結果を得ています。 – mariz

+1

可能な理由は、使用するレイアウトマネージャかもしれません。完全なコードまたは実行可能なコードを使用すると、問題を明確に解決するのに役立ちます。 – mfidan

答えて

1

デフォルトでは、スイングコンポーネントのサイズは(0、0)です。コンポーネントのサイズ/位置は、フレームがパックされたとき、または可視になったときにレイアウトマネージャによって決定されます。

私はあなたがテキストフィールドを表示していないので、親パネルのサイズにはテキストフィールドが含まれていないと思います。フレームのサイズを変更すると、そのサイズとパネルのサイズが再計算されるため、テキストフィールドが表示されます。

これで、必要に応じて表示を切り替えることができるように、テキストフィールドのサイズが計算されました。

これは問題を示すSSCCEを投稿するのに役立ちます。これは、問題を示すためにコンボボックスとテキストフィールドのみを持つフレームを作成することです。今後は、いくつかのコード行に基づいてアプリケーションのコンテキストを推測することができないため、すべての質問にSSCCEが含まれているはずです。

+0

ええ、それはここでの正確な問題です。私はレイアウトをカードレイアウトに変更しました。最初のカードではパネルが空になり、2番目のカードではテキストボックスになります。それに応じて必要なカードが表示されます。今すぐコードがうまくいきました。ありがとうございました。 – mariz

+0

@mariz、 '私はレイアウトをカードレイアウトに変更しました.' - レイアウトマネージャに作業をさせるのは良い考えです。 – camickr

関連する問題