我想创建单独的年,月和日输入文本字段,以便将我的日期字符串正确格式化为我的SQL查询(yyyy-MM-dd)接受的格式。我对这个问题的解决方案就是让用户将所有这三个分成不同的字段,这样我就可以在后端手动重新格式化它们。我想要做的是让每个文本字段最初显示格式,但是当单击时,将清除文本字段以进行输入。例如,当未选择年份文本字段时,我希望它显示" YYYY" (即使它从未被选中开始)并且当它被选中时,清除文本以进行输入。正如您在下面看到的那样,我也将年份文本字段限制为4个字符。
dateOfPurchaseTextField = new JTextField();
dateOfPurchaseTextField.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent arg0) {
if (dateOfPurchaseTextField.getText() == "YYYY") {
dateOfPurchaseTextField.setText("");
}
}
@Override
public void focusLost(FocusEvent e) {
dateOfPurchaseTextField.setText("YYYY");
}
});
dateOfPurchaseTextField.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
if (dateOfPurchaseTextField.getText().length() >= 4) {
if (e.getKeyCode() != 8 && e.getKeyCode() != 46)
e.consume();
}
}
});
dateOfPurchaseTextField.setHorizontalAlignment(SwingConstants.CENTER);
dateOfPurchaseTextField.setFont(new Font("Tahoma", Font.PLAIN, 14));
dateOfPurchaseTextField.setColumns(10);
dateOfPurchaseTextField.setBounds(819, 603, 46, 22);
inventoryFrame.getContentPane().add(dateOfPurchaseTextField);
当我运行我的页面时," YYYY"但是,一旦它被选中然后被取消选择,它将最初弹出,然后它将显示" YYYY"从那时起。我的另一种解决方案是获得" YYYY"最初出现的是将值初始设置为" YYYY"但是当发生这种情况时,选择文本框时文本值不会清除。我该如何解决这个问题?
另一方面,如果有人有更有效的方式让文本字段的日期始终在" yyyy-MM-dd"格式,我很想知道!提前谢谢!
编辑:这个问题与提供的问题不同,因为解决方案完全不同,虽然这个问题是询问整个过程是如何完成的,但这个问题只是问为什么" YYYY"占位符最初从未显示过。