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のスリックとアマチュアは初めてですが、クラス間で転送されるときのStringjkがnullになる方法を教えてください。どうしてこれなの?

PS Imは、slickライブラリとlwjglライブラリを使用しています。私はそれをいじって解決策を見つけようとしているので、それは厄介です。

ありがとう!

4

1 に答える 1

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();はフレームやコンボボックスなどを作成するメソッドを実行しないため、もちろん、これを有効なコンストラクターにするためにドロップするか、jk次のようにします。nullvoid

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

ただし、コンストラクターを使用すると、次のようになります。

TileSelection t = new TileSelection();

の新しいインスタンスを作成するための有効な呼び出しTileSelection

そして、私の編集の前にアドバイスに従った場合は、次のことができます。

System.out.println(t.jk);

インスタンス変数をとして公開するのは良い習慣ではありませんがpublic、それはまた別の機会です。:)

于 2012-08-21T20:52:49.570 に答える