我们如何禁用 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);
}
});
}
}
一种方法是在选择器的 IDateEditor
、JTextFieldDateEditor
.
上调用 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);
我正在使用 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);
}
});
}
}
一种方法是在选择器的 IDateEditor
、JTextFieldDateEditor
.
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);