本人是java菜鸟,希望大虾们多多指教
 
我在一个图书交易Agent界面中放了一个combo控件,里面有三个选项"superUser","buyer","seller",读取后在button控件中调用读取的值,相关代码如下
//设置combo控件
combo = new Combo(shell, SWT.READ_ONLY);
combo.setItems(new String[]{"superUser","buyer","seller"});
combo.select(0);
combo.setData("superuser","superUser");
combo.setData("buyer", "buyer");
combo.setData("seller","seller");
……
//读取combo的值,储存到comboUserType里面
final String comboUserType = (String) combo.getData();
……
//在button中使用这个值
addagentButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
            if(comboUserType.equalsIgnoreCase("superUser")){
//打印comboUserType
System.out.println(comboUserType);
//将获得的combo中的value作为参数运行agent
Object[] args = new Object[]{comboUserType,comboGoodsBuy,comboGoodsSell,comboMoney,comboPrice,comboSellNum,comboBuyNum};
AgentController TradingDAgent=mc.createNewAgent("superUser","jade.example.TradingDAgent",args);
TradingDAgent.start(); }else if(comboUserType.equalsIgnoreCase("buyer")){
Object[] args = new Object[]{comboUserType,comboGoodsBuy,comboMoney,comboBuyNum};
AgentController TradingDAgent=mc.createNewAgent("buyer","jade.example.TradingDAgent",args);
TradingDAgent.start();
}else
{
Object[] args = new Object[]{"seller",comboGoodsSell,comboPrice,comboSellNum};
     AgentController TradingDAgent=mc.createNewAgent("seller","jade.example.TradingDAgent",args);
          }}
});现在问题是报错:java.lang.NullPointerException
at jade.example.TradingDAgentGui$1.widgetSelected(TradingDAgentGui.java:199)
请问:到底应该如何读取combo中的值并使用呢?小弟很急,请各位帮忙,或者加我QQ57351887

解决方案 »

  1.   

    getSelectedItem() 
    返回当前所选项。
    另外你在事件里面不用写那么多代码,尽量做个提示就好了.真正的业务是不会全写在事件里面的
      

  2.   

    getSelectedItem()怎么使用呢?能给出代码示范吗?
    还有您后面那句话我不大明白,可以解释一下吗,谢谢 
      

  3.   

    Obejct o = JComboBox.getSelectedItem();
    这样你就获得了当前选择的对象.另外那些判断啊,业务啊之类的就不用写到view上面
    这样不符合mvc思想.
    其实很简单,多弄下就可以了.
      

  4.   

    这个就可以了:
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.events.SelectionListener;
    import org.eclipse.swt.layout.RowLayout;
    import org.eclipse.swt.widgets.Combo;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;public class ComboTest {
    public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new RowLayout()); final Combo combo = new Combo(shell, SWT.READ_ONLY);
    for (int i = 0; i < 3; i++) {
    combo.add("item" + i);
    } combo.addSelectionListener(new SelectionListener() {
    public void widgetSelected(SelectionEvent evt) {
    System.out.println(combo.getText());
    } public void widgetDefaultSelected(SelectionEvent evt) { }
    }); shell.open();
    while (!shell.isDisposed())
    if (!display.readAndDispatch())
    display.sleep();
    display.dispose();
    }
    }