我正在尝试将JColorChooser添加到面板中,或直接添加到主内容窗格中,以用于我正在制作的简单绘图程序(作为作业的一部分)。
我试图找到使用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();"
对此有任何帮助将不胜感激!
答案 0 :(得分:3)
看起来jcc
永远不会被初始化。
JColorChooser jcc = new JColorChooser();
和几个指针。 Java类名称应按惯例大写,并且根据教授的挑剔程度,您需要在swing线程(事件调度线程)上显示JFrame。你应do this anyway进行良好的GUI线程处理。
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Test test = new Test();
test.setVisible(true);
}
});