一般而言, 大多的设计都是combolist后面跟一个button
由button去控制actionPerformed我就是想简化一下, 所以想每次选定combolist上的一个选项
就自从弹出相应的界面或程序可是结果发现, 选定后有时有相应, 有时就没有相应, 代码如下 OptionList.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
String perName = (String) cb.getSelectedItem();
if (perName.equals("Taems Task Structure")) {
JFrame frame = new JFrame("Taems Task Structure");
Taems task = getTaems();
task.setPreferredSize(new Dimension(400, 400));
frame.getContentPane().add(task, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
} else if (perName.equals("View Markov Process")) {
ViewData test = new ViewData();
test.viewTrainingSet();
} else if (perName.equals("View Input Event")) {
ViewData test = new ViewData();
test.viewInputEvent();
} else if (perName.equals("View Blackboard Tree")) {
mdp.ManageBlackboardTree.buildTreeLevelHash();
}
alternativeAction = perName;
}
});
optionList就是那个下拉列表有意思的是, if后的每个条件判断里的内容, 都是原来button下的代码不变是不是, actioinPerformed 用到combolist就不好用了???
还是要加一些别的语句呢

解决方案 »

  1.   

    combolist   這個是啥里面的元件啊   沒見過呢·~    
    你試試有沒有類似ItemListener的監聽~~
      

  2.   

    那你把ActionListener 換成 ItemListener就行了   
      

  3.   

    谢谢楼上的楼上的朋友itemStateChanged, 和ItemListener
    怎么加在如上的代码里啊JcomboBox, 好像没有如上的两个函数啊 ?
      

  4.   

    OptionList.addItemListener(new ItemListener() {
    public void itemStateChanged(ActionEvent e) {这个报错

    new ItemListener()???
      

  5.   

    JComboBox jcb = new JComboBox();
            jcb.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub
    //把你邏輯判斷放到這就行了
    }
            
            });
      

  6.   

    楼上两位都是高手再请问如果状态未发生改变, 比如
    选择一个选项, 弹出了一个对话框
    然后关闭此对话框又选了同样的这个选项, 用
     itemStateChanged
    对话框就出不来了怎么解决呢?
      

  7.   

    為什么叫itemStateChanged    就是因為選擇的項目變化了   選擇同一個 沒變化 當然不能激活這個監聽了
      

  8.   

    有個笨方法   我還沒想到別的
    就是   先remove這個監聽  然後重置下JComboBox   然後再把這個監聽add上  這樣每次都能刷新了