0

瓷砖选择

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 是如何变为空的。为什么是这样?

PS 我使用 slick 和 lwjgl 库只是提醒一下。它很乱,因为我一直在摆弄它并试图找到解决方案。

谢谢!

4

1 回答 1

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

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

在构造函数中设置默认选定项,TileSelectionjk在分配默认选定项后在构造函数中分配:

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,但那是另一次了。:)

于 2012-08-21T20:52:49.570 回答