瓷砖选择
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());*/
}
我为它的混乱道歉,但我是新手,也是java爱好者,但你能不能真诚地告诉我,当在类之间传输时,String jk是如何变为null的。为什么会这样?
第页。S我使用光滑和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();
EDIT(这也是关于您编辑TileSelection
输出代码之前的代码):
另请注意这不是构造函数:
public void TileSelection(){
}
构造函数不使用void
关键字,因此调用TileSelection t = new TileSelection();
将不会执行您想要的方法来创建框架和组合框等,因此jk
当然将是null
,要么删除void
使其成为有效的构造函数,要么执行:
TileSelection t = new TileSelection().TileSelection();
不过我想说的是使用一个构造函数,它会生成这样的:
TileSelection t = new TileSelection();
用于创建CCD_ 9的新实例的有效调用。
如果你在我编辑之前遵循了建议,那么你可以:
System.out.println(t.jk);
尽管将实例变量公开为public
不是一种好的做法,但这是另一种做法。:)