0

次の JDateChooser を作成しました。

availFromDate = new JDateChooser();
availFromDate.setDateFormatString("dd/MM/yyyy");
JTextFieldDateEditor dateEditor = (JTextFieldDateEditor)availFromDate.getComponent(1);
dateEditor.setHorizontalAlignment(JTextField.RIGHT);
availFromDate.setSize(new Dimension(50, 0));
availFromDate.add(availablefromT);
calendarP.add(availFromDate);
contentPane.add(calendarP);
frame1.add(contentPane);
frame1.setVisible(true);

ただし、JDateChooser から選択された日付が保持されている JTextField に表示される必要があります。実装方法はわかりませんが、getDate() メソッドが含まれている必要があることに気付きました。

日付を取得してテキストフィールドに dd/MM/yyyy の形式で表示するにはどうすればよいですか?

編集:

提案を見た後、次のことを試しました。

  SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
  String date = sdf.format(availFromDate.getDate());
  availablefromT.setText(date);

ただし、今は NullPointerException を取得しています。理由を知っている人はいますか?これに関係しているようです:String date = sdf.format(availFromDate.getDate());

エラー:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.util.Calendar.setTime(Calendar.java:1770)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)
    at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
    at java.text.DateFormat.format(DateFormat.java:345)
    at Controller.makeCustEnquiryGUI(Controller.java:2061)

例:

import com.toedter.calendar.JDateChooser;
import com.toedter.calendar.JTextFieldDateEditor;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import javax.swing.*;
import java.util.*;

public class CalendarTest {

    private JFrame chooseCruiseFrame;
    private JDateChooser availFromDate;
    private JTextField availablefromT;
    private JPanel contentPane;
    private JPanel centerP;

    public static void main(String[] args) {
        new CalendarTest();
    }

    public CalendarTest() {

        //////////// Creating Frame
        chooseCruiseFrame = new JFrame("");
        chooseCruiseFrame.setSize(300, 200);
        chooseCruiseFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        chooseCruiseFrame.setVisible(true);

        //////////// Creating contentPane
        contentPane = new JPanel(new GridLayout(0, 1));
        contentPane.setBackground(new java.awt.Color(255, 255, 255));
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        //////////// Creating CenterP
        centerP = new JPanel();
        centerP.setBackground(new java.awt.Color(255, 255, 255));
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        // Available From Calendar
        JLabel availF = new JLabel("Available From:");
        centerP.add(availF);
        contentPane.add(centerP);
        availablefromT = new JTextField(11);
        centerP.add(availablefromT);
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        availFromDate = new JDateChooser();
        JTextFieldDateEditor dateEditor = (JTextFieldDateEditor) availFromDate.getComponent(1);
        dateEditor.setHorizontalAlignment(JTextField.RIGHT);
        availFromDate.add(availablefromT);
        centerP.add(availFromDate);
        contentPane.add(centerP);
        chooseCruiseFrame.add(contentPane);
        chooseCruiseFrame.setVisible(true);

        // Converting Date to String
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        String date = sdf.format(availFromDate.getDate());
        availablefromT.setText(date);
    }
}
4

6 に答える 6

2

同じコードがここで機能します

   //button    

        private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        DateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
        String date = fmt.format(this.txt_data_ini.getDate()); //jdatechooser
        this.teste.setText(date);

    }  
于 2015-02-12T13:43:36.520 に答える
2

JCalendar.jar v.1.4 への JDateChooser への大きな注目: この方法で日付ピッカーの「SelectedDate」を取得します (ステートメントを使用して、という名前の JDataChooser オブジェクトを作成した後dataEmissioneTextField):

 Date date = dataEmissioneTextField.getDateEditor().getDate();

特定のリスナーで日付を選択して、選択した日付の値を保存する場合は、次のように記述できます。

dataEmissioneTextField.getDateEditor().addPropertyChangeListener(new PropertyChangeListener() {
    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        // TODO Auto-generated method stub
        if ("date".equals(evt.getPropertyName())) {
            //Get the selected date 
            Date date = dataEmissioneTextField.getDateEditor().getDate();
            dataConsegnaTextField.setDate(dataConsegnaTextField.getDateEditor().getDate());
            ordine.setOrderDeliveryDate(date);
            //Draws a Green Border when the date is selected 
            dataEmissioneTextField.setBorder(BorderFactory.createLineBorder(Color.GREEN));
        } else {
            //Draws a Red Border when the date is not selected  
            dataEmissioneTextField.setBorder(BorderFactory.createLineBorder(Color.RED));
        }
    }
});

JDateChooserは のみをサポートすることに注意してくださいPropertyChangeListener

よろしく。

于 2017-07-28T20:13:26.727 に答える
0

あなたは好きにすることができます

 public void jdatechooserexample() {
   JDateChooser chooser=new JDateChooser();
    JTextField field=new JTextField(15);
       chooser.addPropertyChangeListener("date",new PropertyChangeListener  () { 
     public void propertyChange(PropertyChangeEvent e){
     JDateChooser chooser=(JDateChooser)e.getSource();
      SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
      field.setText(sdf.format(chooser.getDate()));

 }
 });
 }
于 2015-04-29T10:38:20.693 に答える
0

さて、JDateChooser と JTextField があります。その日付がテキストになるように、変更をトリガーする何かが必要になります。まず、オブジェクト クラスである新しいインスタンスを作成する必要があります。これを行うときは、メソッド getData (Web で検索) を呼び出して、オブジェクト変数に格納します。次に、文字列である新しい変数を作成し、そこにオブジェクトを格納します。最後に、JTextField にテキストを表示します。

したがって、コードは次のようになります。

public Object x;
public string y;
x = getData(availFromDate);
y = x.toString();
JTextField.setText(y);

これが機能しない場合は、次を試してください。

y = string.valueOf(availFromDate);
enter code here
于 2015-02-07T02:52:23.810 に答える