2009-08-06 5 views
0

別の方法から更新できるImageIconをJLabelに入れたいと思っています。しかし、静的なJLabelを作成して(別のメソッドからアクセスできるように)、imageIconを含むJlabelとしてインスタイリングできる方法を見つけることはできません.JLabelラベル以外の方法があります=新しいJLabel(imgIcon)を使用してimageIconでラベルを作成しますか? setIconメソッドを使用しようとしましたが、ラベルは上記のようにinstatiatedされましたが、nullポインタ例外が発生しました。助けてくれてありがとうございました。すべてのメソッドとクラスで使用できるimageIconを持つJLabelを作成するにはどうすればよいですか?

答えて

1

JLabelを静的にしないでください。代わりに他のメソッドの外側に定義してください。

public class Test { 

    private JLabel label = new JLabel(new ImageIcon(/*your icon*/)); 
} 

あなたはアクセサメソッドを作成し、別のクラスからアクセスする必要がある場合:あなたが作成することなく、それらにアクセスしたいとき

public JLabel getLabel() { 
    return label; 
} 
+0

からいつでもアクセスする必要がある場合を除き

すべてのすべてで、私は、静的オブジェクトを使用しないように最善をすることができますしてみてくださいメソッドの外部で作成された場合は、同じクラスの他のメソッドからアクセスします。非静的変数は静的コンテキストから参照できないというエラーが表示されます。これは同じクラス内であっても、getlabel(0メソッド)を使用する必要がありますか?getlabel()メソッドを使用するにはどうすればいいですか?つまり、label2 = testからgetLabelメソッドを呼び出すラベルを作成する必要がありますか? getLabel()?またはラベルにアイコンを変更するには、どうすればアクセスできますか?ありがとう – pie154

+0

同じクラスの他のメソッドからアクセスしたい場合は、メソッドを静的にしないでください。 – AlbertoPL

+0

同じクラスと別のクラスの両方からのアクセスですか? – pie154

0

のみ(Clazzのような)任意のクラスの静的メソッドまたはオブジェクトを使用しますオブジェクト(例:Clazz c = new Clazz();)。それが不可能なので、私はClazz.regularMethod();を呼び出すことはありませんでした

public class Clazz //A class with methods 
{ 
    public void regularMethod() 
    { 
    //Do something local 
    } 

    public static void staticMethod() 
    { 
    //Do something static 
    } 
} 

public class Main //The main class with the main method. 
{ 
    public static void main(String[] args) 
    { 
    Clazz.staticMethod(); 

    Clazz c = new Clazz(); 

    c.regularMethod(); 
    } 
} 

注意:私は、静的メソッドpublic static void staticMethod() {}と定期的な方法public void regularMethod() {}を行う場合たとえば、これは私がそれらにアクセスする方法です。私はc.staticMethod();と呼ぶことはできませんでしたが、それは可能ですが、それは貧弱な形式なのでです。それ(A)は絶対に必要である、または(B)のラベルがプライベートに作成されている場合は任意のコンテキスト

関連する問題