Java 将JSpinner与JFormattedTextField组合
我想制作一个定制的Java 将JSpinner与JFormattedTextField组合,java,swing,jspinner,jformattedtextfield,Java,Swing,Jspinner,Jformattedtextfield,我想制作一个定制的JSpinner,用于编辑工作时间。我想要的格式是1HH:mm:SSA1,我已经得到了这个部分 我还想添加一些JFormattedTextField的功能: 设置占位符字符(“”) 例如,时间是09:23:45,当用户删除09时, __:23:45显示在屏幕上 输入限制 例如,时间是09:23:45,当用户删除09时, 并且尝试输入任何东西,他只能输入数字,不允许输入字母 任何帮助都将不胜感激 使用JFormattedTextField可能有更好的解决方案,但这里有一个内置ja
JSpinner
,用于编辑工作时间。我想要的格式是1HH:mm:SSA1,我已经得到了这个部分
我还想添加一些JFormattedTextField
的功能:
设置占位符字符(“”)
例如,时间是09:23:45,当用户删除09时,
__:23:45显示在屏幕上
例如,时间是09:23:45,当用户删除09时,
并且尝试输入任何东西,他只能输入数字,不允许输入字母
任何帮助都将不胜感激 使用JFormattedTextField可能有更好的解决方案,但这里有一个内置java类的解决方案。此外,这也不符合您的要求,将删除的数字替换为“\u1”。但您可以选择秒,然后旋转秒而不是小时。此外,几乎只有一个输入限制。您可以写信,但不会触发ChangeEvent。额外的好处:你不必考虑在60分钟后什么时候换到下一个小时,当然,这对约会的一切都是有效的(因此,旋转月份或年份也是可能的)
谢谢,但我希望用户不能输入任何字母,只能输入数字。您能否进一步介绍如何将JFormattedTextfield与之链接?日期编辑器只有部分功能
public class HourSpinner implements ChangeListener {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new HourSpinner();
}
});
}
public HourSpinner() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100, 70);
frame.setLocationRelativeTo(null);
Container contentPane = frame.getContentPane();
JSpinner dateSpinner = new JSpinner(new SpinnerDateModel(new Date(), null, null, Calendar.HOUR_OF_DAY));
DateEditor editor = new JSpinner.DateEditor(dateSpinner, "HH:mm:ss");
dateSpinner.setEditor(editor);
dateSpinner.addChangeListener(this);
contentPane.add(dateSpinner);
frame.setVisible(true);
}
@Override
public void stateChanged(ChangeEvent e) {
JSpinner source = (JSpinner) e.getSource();
System.out.println(source.getValue());
}
}