2016-09-23 17 views
0

JTextFieldを日付ピッカーフィールドに置き換えようとしていますが、ここでは他の例も見つけられました。これはほんの一部のダムエラーですが、私は私が間違っているこの時間をやった私の側から見ることができない場合https://sourceforge.net/projects/jdatepicker/JDatePickerを使用したNullPointerException

//... 
import org.jdatepicker.impl.JDatePanelImpl; 
import org.jdatepicker.impl.JDatePickerImpl; 
import org.jdatepicker.impl.UtilDateModel; 

public class NewTransactionDialog extends JDialog { 

    private JPanel panel = new JPanel(new GridLayout(0, 1)); 

    //... 

    public NewTransactionDialog() { 

     //... 

     // date 
     panel.add(new JLabel("Date:")); 
//  panel.add(new JTextField()); // old text field i want to replace 
     UtilDateModel model = new UtilDateModel(); 
     JDatePanelImpl datePanel = new JDatePanelImpl(model, null); 
     JDatePickerImpl datePicker = new JDatePickerImpl(datePanel, null); 
     panel.add(datePicker); 

     //... 

     getContentPane().add(panel); 
     pack(); 
    } 
} 

謝罪 - また、私は、最新バージョン(v1.3.4)を持っています。私は2番目のNULL引数cozを追加しなければならなかった。Eclipseがコンストラクタが一致しなかったと私に伝えていた。これは、1つの引数だけがコンストラクタ(JDatePanelImpl、JDatePickerImpl)に渡されたすべての例とは異なるようです。これらはNULL以外のものとして渡されるべきですか?

日食コンソールにスローされたエラーは、次のとおりです。7

Exception in thread "main" java.lang.NullPointerException 
    at org.jdatepicker.impl.JDatePanelImpl$InternalView.getPreviousMonthButton(JDatePanelImpl.java:517) 
    at org.jdatepicker.impl.JDatePanelImpl$InternalView.getPreviousButtonPanel(JDatePanelImpl.java:442) 
    at org.jdatepicker.impl.JDatePanelImpl$InternalView.getNorthPanel(JDatePanelImpl.java:251) 
    at org.jdatepicker.impl.JDatePanelImpl$InternalView.initialise(JDatePanelImpl.java:234) 
    at org.jdatepicker.impl.JDatePanelImpl$InternalView.<init>(JDatePanelImpl.java:222) 
    at org.jdatepicker.impl.JDatePanelImpl.<init>(JDatePanelImpl.java:110) 
    at biz.martyn.budget.NewTransactionDialog.<init>(NewTransactionDialog.java:54) 
    at biz.martyn.budget.TransactionsToolbar.<init>(TransactionsToolbar.java:34) 
    at biz.martyn.budget.Budget.main(Budget.java:39) 
+0

これらは、私がJDatePickerライブラリに所属するインポートされたJARライブラリのクラスです。私は、エラーメッセージでメソッド呼び出しを見ることができ、それらは私の方法でもないので、必ずライブラリクラスにアクセスしなければなりません。これらのクラスをどのようにインポートしているかを表示するために投稿を更新します。 EclipsesライブラリのインストールウィザードでJARファイルをダウンロードした後、ライブラリをインストールしました。 – Martyn

答えて

1
at org.jdatepicker.impl.JDatePanelImpl$InternalView.getPreviousMonthButton(JDatePanelImpl.java:517) 

これは彼が失敗するところです。そこthis.i18nStrings.getProperty("text.month")

上のメソッド呼び出しがあるが、あなたはそのフィールドのnullでを初期化されています

panel.add(new JLabel("Date:")); 
    UtilDateModel model = new UtilDateModel(); 
    JDatePanelImpl datePanel = new JDatePanelImpl(model, null); // <<<< 
    JDatePickerImpl datePicker = new JDatePickerImpl(datePanel, null); 
    panel.add(datePicker, BorderLayout.CENTER); 

、典型的なNullPointerExceptionが原因にthatsの

CTOR署名は言う:だから、それをpublic JDatePanelImpl(DateModel<?> model, Properties i18nStrings) Propertiesオブジェクトを待ちます。

+1

ありがとうございます。ここでも解決策が見つかりました - http://stackoverflow.com/questions/26794698/how-do-i-implement-jdatepicker – Martyn

1

あなたはPropertiesのインスタンスとして、コンストラクタの2番目のパラメータを渡す必要があります。それは単にすることができます

JDatePanelImpl datePanel = new JDatePanelImpl(model, new Properties()); 
JDatePickerImpl datePicker = new JDatePickerImpl(datePanel, new Properties()); 

これはNullPointerExceptionを取り除くだろうが、あなたは空の文字列が表示されることがあります。ライブラリのドキュメントを読んでください。私はソースを見て、Propertiesインスタンスは、これらのプロパティが定義されている必要があります:text.todaytext.monthtext.year

関連する問題