私は最初にDatePickerを構築しました。ユーザーがJtextFieldをクリックするとすぐに、JTextFieldの横にカレンダーダイアログが開きます。日付を選択する代わりに日付を入力したい場合は、まず開いているダイアログを閉じてから日付を入力する必要があります。java swing DatePickerがJTextFieldを使用して間違っていて、変更したい
はここにそれがどのように見えるかです:それはここでの問題はないので
public class DateTextField extends JTextField implements Observer {
public void update(Observable o, Object arg) {
Calendar calendar = (Calendar) arg;
DatePicker dp = (DatePicker) o;
setText(dp.formatDate(calendar));
}
public DateTextField() {
final Observer obs = this;
final JTextField tf = this;
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if(tf.isEditable()){
DatePicker dp = new DatePicker(obs);
Date selectedDate = dp.parseDate(tf.getText());
dp.setSelectedDate(selectedDate);
dp.start(tf);
}
}
});
}
私は日付ピッカーのクラスを示したhavent。問題は、日付を入力するたびにカレンダーダイアログを閉じることが非常に面倒だったことです。私がやりたかったのは、JtextFieldの側面にボタンを置くことでした。ボタンをクリックするだけで、ダイアログがポップアップします。
しかしこれを行うには、JPanelクラスを拡張するためにDatePickerが必要で、JTextfieldとJButtonを並べてレイアウトすることができます。しかし、残念ながら、DatePickerクラスはJtextFieldを拡張し、私のアプリケーション全体でDatePickerがJtextFieldであることを期待しています。 JComponentからJTextfieldへのキャストがあり、このDatePickerでgetおよびsetText()を呼び出します。
JPanelフォームを拡張するためにDatePickerを変更する必要がある場合は、どこにでもアプリケーションが壊れてしまいます。 JTextfieldをドレスアップして、サイドにあるボタンをペイントして表示することができるかどうか疑問に思っていましたか?これは可能ですか?
なぜホイールを再発明するのですか?あなたはあなたのためにすべての重労働を行うJXDatePicker(SwingXプロジェクトで)を使うことができます:-) – kleopatra
私はそれを以前に試みましたが、ユーザーが年を選択することができませんでした。これは私が約1.5年前に試みたものです。したがって、私自身のコンポーネントを構築しました。今ではその使用法が私のコードベースに盛り込まれています。再びすべての場所を変更することを伴わない何かを探しています。 – sethu