1

テーブルの日付列でJCalendarを。として使用します。問題は、クリックされた列セルが表示されても、フォーカスが失われた場合、フォーカスが失われたイベントが発生しないことです。ファイアフォーカスロストイベントにする方法は?そして、これを行った後、ボタンをクリックした後に表示されたときに発射フォーカスが失われるのを防ぐ方法はありますか?JDateChoosertablecelleditorJDateChooserJCalendarJCalendar

私がやろうとしていることは、誰かがカレンダーから日付を選択して日付を指定した場合、それ以外のstopCellEditing();場合はフォーカスが失われたイベントが停止するまで待つか、cancelCellEditing();

ここに画像の説明を入力してください

4

2 に答える 2

1

@mKorbelによって言及されたソース配布では、セルエディタとしてcom.toedter.calendar.demo.DemoTable使用する例です。com.toedter.calendar.JDateChooserCellEditor重要なステップはこれらです。

JTable table = new JTable(…);
table.setDefaultEditor(Date.class, new JDateChooserCellEditor());

補遺:これは、予想される動作を示すsscceです。

import com.toedter.calendar.demo.DemoTable;
import java.awt.EventQueue;
import javax.swing.JFrame;

/** @see http://stackoverflow.com/questions/7643893 */
public class CalendarTable {

    private void display() {
        JFrame f = new JFrame("CalendarTable");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new DemoTable());
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new CalendarTable().display();
            }
        });
    }
}
于 2011-10-08T04:18:06.323 に答える
1

日付を選択すると発生するpropertyChangedイベントを見つけました。JDateChooserテーブルがfocusLostjTable1.putClientProperty("terminateEditOnFocusLost", true);で編集を終了するようにします

編集:表のセルがフォーカスを失って終了する年を変更する場合、カレンダーのポップアップがダウンしている場合:(

jDateChooser.addPropertyChangeListener(new PropertyChangeListener() {

    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        if (evt.getPropertyName().equals("date")) {
            stopCellEditing();
        }
    }
});

編集 (解決済み) :フォーカスが失われたときに、 jTable1.putClientProperty("terminateEditOnFocusLost", true);taFocusListenerJTablein に追加して編集をキャンセルする代わりに、ポップアップが表示されているかどうかを確認する機会を与えます。ただし、その前にpopupメソッドで拡張する必要があります。ポップアップ変数が保護されているためです。また、セル エディター コンポーネントはフォーカス可能であってはなりません。TableCellEditorJDateChooser'sJDateChooserisVisibleJTable

于 2011-10-08T04:42:19.870 に答える