为什么我的JComboBox中的字符串返回null

时间:2012-08-21 20:36:36

标签: java string nullpointerexception lwjgl slick2d

平铺选择

protected void myBox(ActionEvent evt) {
    if (patternList.getSelectedItem() != null) {
        System.out.println(patternList.getSelectedItem().toString());
        getImagePath();
    }

public String getImagePath(){
    jk = patternList.getSelectedItem().toString();
    System.out.println(jk);
    return jk;
}

 public void TexDefine() throws SlickException, FileNotFoundException{
    TileSelection t = new TileSelection();
    Tex[171]= new Image(t.newSelection);
    textureCollecter();
}


    public int getN(int px, int oy){
    int n;
    if(p==0&&o==0){
        n = 0;
    }else if(p==0){
        n=oy*42;
    }else{
        n=(oy*42)+px;
    }
    return n;
}
if(in.isKeyPressed(Input.KEY_G)){
        TileSelection t = new TileSelection();
        System.out.println(t.jk);
        /*TexTileRenderer(getN(p, o), returnImagePth());*/
    }

我为bieng凌乱而道歉,但我不熟悉java,但是请你告诉我genuisness如何在类之间转换时字符串jk变为null。这是为什么?

P.S Im使用光滑和lwjgl libarys只是抬头。它凌乱,因为我一直在摆弄它并试图找到解决方案。

谢谢!

1 个答案:

答案 0 :(得分:3)

    TileSelection t = new TileSelection();
    System.out.println(t.jk);

此时,如果您没有选择值/默认值,则selectedItem将返回null。

TileSelection构造函数中设置默认选定项目,并在指定默认选定项目后在构造函数中指定jk

patternList.setSelectedIndex(0);//sets first option in combobox to default value
jk=(String) patternList.getSelectedItem();

编辑(这也是您编辑TileSelection代码之前的代码):

另请注意这不是构造函数

public void TileSelection(){
}

构造函数不使用void关键字,因此调用TileSelection t = new TileSelection();将无法执行您想要的方法来创建框架和组合框等当然jknull删除void以使其成为有效的构造函数或执行:

TileSelection t = new TileSelection().TileSelection(); 

虽然我会说使用一个构造函数而不是将构建它:

TileSelection t = new TileSelection();

创建TileSelection的新实例的有效调用。

如果您在编辑之前遵循了建议,那么您可以:

System.out.println(t.jk);

虽然将实例变量公开为public并不是一个好习惯,但那是另一次。 :)