2011-12-22 11 views
0

私が間違っていることを誰かに教えてもらえますか?私はJavaの新機能で、カードレイアウトでパネルが切り替わらない

..

JComboBox comboBox = new JComboBox(); 

    comboBox.addItem("Factor 1"); 
    comboBox.addItem("Factor 2"); 
    comboBox.addItem("Factor 3"); 

    comboBox.setSelectedIndex(-1); 

    studyPlanController.setFactors(comboBox); 
    MyItemListener itemListener = new MyItemListener(); 

    comboBox.addItemListener(itemListener); 
    itemListener.setFactors(cardFactors); 

と..

import java.awt.CardLayout; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 

import javax.swing.JPanel; 

public class MyItemListener implements ItemListener { 
    JPanel factors; 

    public void setFactors(JPanel factors) { 
     this.factors = factors; 
    } 

    @Override 
    public void itemStateChanged(ItemEvent e) { 
     CardLayout cl = (CardLayout) (factors.getLayout()); 
     cl.show(factors, (String) e.getItem()); 
    } 

} 

ブレークポイント)(のitemStateChangedに配置され、そしてCOMBOXが変更され、その後、ブレークポイントをヒットし、しかしcardlayoutまだ影響を受けていない。

+0

あなたが表示していないコードに何か間違った;-) SSCCEの時間。ところで、あなたのitemListenerでは、おそらくitem_deselectedイベントではなく、item_selectedイベントでカードを変更したいだけです。 – kleopatra

+1

なぜ2番目。 time http://stackoverflow.com/questions/8594306/overlap-jpanels-with-windowbuilder-for-eclipse、このチュートリアルの例を次に示します – mKorbel

+0

mKorbel - これは別の質問です。 – pingu

答えて

2

http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

を見てみてくださいそれがコンボボックスに表示さと同じ名前のカードレイアウトにパネルを追加していることを確認してください。名前に不一致があるかもしれません。

+0

チェックすると、名前が一致します。 – pingu

+0

あなたは正しかった!ありがとう、私は引用符で囲まれたカードレイアウトにパネルの文字列定数名を渡していました。ドゥー – pingu

関連する問題