瓷砖选择
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
不是一个好习惯,但这是另一回事了。 :)