2012-04-17 12 views
0

私はJColorChooserをパネルに追加するか、メインの内容ペインに直接追加して、(割り当ての一部として)作成している簡単な描画プログラムを作成しようとしています。JColorChooserをコンテンツペイン/ Jpanelに追加するにはどうすればよいですか?

JColorChooserを使用してコードの例を見つけようとしましたが(例えば、http://docs.oracle.com/javase/tutorial/uiswing/components/colorchooser.html)、動作させることができません。

関連するコード:

import java.awt.BorderLayout; 
import javax.swing.JColorChooser; 
import javax.swing.JFrame; 
import javax.swing.colorchooser.ColorSelectionModel; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 


public class test extends JFrame 
{ 

JColorChooser jcc; 
ColorSelectionModel model = jcc.getSelectionModel(); 

public test() 
{ 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setLocation(100,100); 
    this.setSize(900,600); 

    getContentPane().add(jcc, BorderLayout.CENTER); 

    model.addChangeListener(new ChangeListener() 
    { 
    public void stateChanged(ChangeEvent e) { 
     System.out.println("Color: " + jcc.getColor()); 
    } 

    }); 

} 

public static void main(String[] args) 
{ 

    test m=new test(); 

} 

} 

私はEclipseを使用していて、それは私のコードにエラー(赤線)を返しませんが、私はそれを実行しようとしたら、私はこれを取得する:

Exception in thread "main" java.lang.NullPointerException 
at test.<init>(test.java:14) --> this is "ColorSelectionModel model = jcc.getSelectionModel();" 
at test.main(test.java:38) --> this is "test m=new test();" 

これに関するすべてのヘルプは非常に高く評価されます。

答えて

3

jccは決して初期化されていないようです。

JColorChooser jcc = new JColorChooser(); 

と2つのポインタ。 Javaのクラス名は大文字で大文字にする必要があります。また、教授の強さに応じて、スイングスレッド(イベントディスパッチスレッド)にJFrameを表示する必要があります。良好なGUIスレッド処理のためには、do this anywayを使用する必要があります。

public static void main(String[] args) 
{ 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      Test test = new Test(); 
      test.setVisible(true); 
     } 
}); 
+0

非常に良い回答+1 – mKorbel

+0

ガー、実際には他の点で初期化しましたが、別のエラーが出ました。私は今、もう一度初期化しました。それは油でつけた機械のように機能します。 私はクラスを通常大文字にしていますが、一緒にスローしてここに貼り付けるだけでしたが、とにかくポインタに感謝します! ありがとう! – user1339253

+0

そして、これは緑のチェックマーク;-)をクリックする部分です – Jim

関連する問題