gpt4 book ai didi

java - 当光标位于分钟区域时,具有 dateModel "H:mm"的 JSpinner 更新小时而不是分钟

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:43 24 4
gpt4 key购买 nike

我们有一个带有 SpinnerDateModelDateEditorJSpinner

    JSpinner spinner = new JSpinner(new SpinnerDateModel());
spinner.setEditor(new JSpinner.DateEditor(spinner, "H.mm"));

enter image description here

如果您单击小时并单击箭头,它会更改小时,这是预期的。

但是,如果您在所有数字之后的分钟区域中单击,在本例中,是在“5”之后 enter image description here然后单击箭头,它将更改小时而不是分钟。

步骤:

  1. 在“4”之前单击并单击箭头。营业时间将更改

  2. 在所有数字(“5”之后)之后的分钟区域中点击之后 - 小时数仍然发生变化。但是应该更改分钟,而不是小时

点击分钟区所有数字后,如何让分钟发生变化?

这里是完整的来源:

public class BoxFrame extends JFrame {

private JPanel contentPane;

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
BoxFrame frame = new BoxFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

public BoxFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
setContentPane(contentPane);
contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
JSpinner spinner = new JSpinner(new SpinnerDateModel());
spinner.setEditor(new JSpinner.DateEditor(spinner, "H.mm"));
contentPane.add(spinner);
}
}

最佳答案

当微调器询问底层 JFormattedTextField 当光标在右端时选择了什么,返回的日历字段索引是 -1,所以微调器得到下一个值基于 Calendar 的最后一个选定字段,在您的情况下,它是 Calendar.HOURCalendar.MINUTE。单击其中一个箭头时,将在 SpinnerDateModel 上设置该值。

因此,为了获得您想要的结果,您需要检查 JFormattedTextField 中的索引是否是最右边的索引并更改它以使其在 Calendar.MINUTE 内 field 。不漂亮,但很管用。

 JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "H.mm") {

@Override
public JFormattedTextField getTextField() {
JFormattedTextField txt = super.getTextField();
int start = txt.getSelectionStart();
int length = txt.getText().length();
if (start == length) {
txt.setSelectionStart(length - 1);
}

return txt;
}
};

关于java - 当光标位于分钟区域时,具有 dateModel "H:mm"的 JSpinner 更新小时而不是分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25285686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com