簡體   English   中英

我們如何禁用 JDateChooser 上的編輯選項?

[英]How do we disable editing options on JDateChooser?

我正在使用JDateChooser來允許用戶輸入日期。 如何在出現的文本字段上禁用編輯選項? 我不希望用戶在該文本字段中輸入任何內容 - 只能通過從日歷中單擊來輸入輸入。 我如何做到這一點?

下面是我的代碼:

public class PQReport {
// product quotations report

public JPanel panel;

public PQReport() {
    panel = new JPanel();
    panel.setPreferredSize(new Dimension(125, 300));
    initUI();

}

public void initUI() {
    panel.setLayout(new net.miginfocom.swing.MigLayout());
    JDateChooser chooser = new JDateChooser();
    chooser.setLocale(Locale.US);
    //chooser.isEditable(false);
    chooser.setDateFormatString("yyyy-MM-dd");
    panel.add(new JLabel("Date of Birth:"));
    panel.add(chooser);
    panel.add(new JButton("click"));
}

public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            PQReport rep = new PQReport();
            JFrame f = new JFrame();
            f.setSize(400, 400);
            f.setVisible(true);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(rep.panel);

        }
    });
    }
 }

一種方法是在選擇器的IDateEditorJTextFieldDateEditor上調用setEditable(false)

JDateChooser chooser = new JDateChooser();
JTextFieldDateEditor editor = (JTextFieldDateEditor) chooser.getDateEditor();
editor.setEditable(false);

這允許選擇新日期,同時禁止通過JTextField本身進行更改:

設置可編輯假

替代方法chooser.setEnabled(false)具有完全禁用JDateChooser的效果。

設置啟用假

或者,試試這個完全禁用JDateChooser代碼:

JDateChooser chooser = new JDateChooser();
chooser.setEnabled(false);

圖片

你必須把:

editor.setEnabled(false);

代替:

editor.setEditable(false);

所以正確的代碼是(我測試過):

JDateChooser chooser = new JDateChooser();
JTextFieldDateEditor editor = (JTextFieldDateEditor) chooser.getDateEditor();
editor.setEnabled(false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM