0

JDateChooser に、日付が選択されているかどうかを検出する addPropertyChangeListener を追加しました。選択された場合は、JCombobox を開きます。(日付) 文字列は選択時に検出されますが、JComboBox を開くことができません。

コードは次のとおりです。

dateChooserCal.getDateEditor().addPropertyChangeListener(new PropertyChangeListener() {
    public void propertyChange(PropertyChangeEvent evt) 
    {
        date = dateChooserCal.getDate();

        if ("date".equals(evt.getPropertyName())) 
        {   
            dates = evt.getNewValue();
            dateString = String.format("%1$td-%1$tm-%1$tY", date);  
            if (dateString != null) 
            {
                System.out.print(dateString);
                chooseTimeBox = new JComboBox(controllerApp.getTime());
                chooseTimeBox.setBounds(215, 261, 282, 22);
                add(chooseTimeBox);
                chooseTimeBox.setVisible(true);
            }

        }

    }       

});
4

1 に答える 1

3

コンボボックスが表示可能な要素に含まれていないという事実が、おそらく問題の主な原因です...

// You create a new instance
chooseTimeBox = new JComboBox(controllerApp.getTime());
// You  position and size, more on this later...
chooseTimeBox.setBounds(215, 261, 282, 22);
// You make it visible...but it's visible by default...
chooseTimeBox.setVisible(true);
// But you never add it to anything...

インスタンスフィールドを使用しているように見えるので、以前のインスタンスをすでに作成して追加していると推測できます。その場合、そのインスタンスモデルを更新する必要があります...

レイアウトの使用は避けてくださいnull。ピクセル パーフェクトなレイアウトは、最新の UI デザインでは錯覚です。コンポーネントの個々のサイズに影響を与える要因は多すぎますが、どれも制御できません。Swing はコアでレイアウト マネージャーと連携するように設計されており、これらを破棄すると問題が後を絶たず、修正にさらに多くの時間を費やすことになります。

SWING でヌル レイアウトを使用するのはなぜ嫌われるのですか? をご覧ください。詳細については、コンテナ内のコンポーネントのレイアウト...

于 2014-12-02T10:12:19.877 に答える