瓷砖选择

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的业余爱好者,但是请您能启发我,我很聪明,如何在类之间转移String jk时变为null。为什么是这样?

P.S Im仅使用slick和lwjgl库。它很乱,因为我一直在摆弄它,并试图找到解决方案。

谢谢!

最佳答案

    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();不会执行您要创建框架和组合框等的方法,因此jk当然是null或删除void以使其有效构造函数或执行:

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


尽管我会说使用构造函数而不是这样做:

TileSelection t = new TileSelection();


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

如果您在我进行编辑之前遵循了建议,则可以:

System.out.println(t.jk);


虽然将实例变量公开为public不是一个好习惯,但这是另一回事了。 :)

09-25 20:32