gpt4 book ai didi

Java - requestFocus当前元素

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:52 25 4
gpt4 key购买 nike

我遇到的问题是,我对输入字段进行了正则表达式检查,如果输入不正确,并且我按 Tab 键进行检查,并且通常移动到下一个元素,则它应该保留在当前字段。但由于正常的选项卡策略,它会移动到下一个元素,即使我请求关注当前元素,它仍然会移动到下一个元素。

感谢您事先的帮助:)

这是我的代码片段:

}else if(comp.getName().equals("input_dauer")){
System.out.println("Test3");
final Pattern pattern = Pattern.compile("^[\\d]{0,}[,.]+[\\d]{1,3}$");
if (!pattern.matcher(input_dauer.getText()).matches()) {
lblDauer.setForeground(Color.red);
MandatoryDauer = 0;
comboBox_aktivitaet.requestFocus();
input_dauer.requestFocus();

}
else{
lblDauer.setForeground(Color.decode("#1E2F3F"));
MandatoryDauer = 1;
textArea_beschreibung.requestFocus();
}

最佳答案

您可以使用 setFocusTraversalKeysEnabled(false) 禁用 JTextField(或任何您的 Component)的焦点遍历键,并在需要时手动转移焦点。

在下面的示例中,如果文本长度小于 5 个字符,则视为无效,因此我们不会转移焦点。

如果有效(长度>=5),如果我们想坚持逻辑焦点顺序,我们可以使用 transferFocus() 来转移焦点,或者使用 requestFocus() 来转移到特定组件。

添加了一个虚拟按钮,以便您可以观察焦点行为。

JPanel contentPane = new JPanel();
JFrame fr = new JFrame();
JButton someButton = new JButton("Button");
JTextField textField = new JTextField(10);
textField.setFocusTraversalKeysEnabled(false);
textField.addKeyListener(new KeyAdapter() {

@Override
public void keyPressed(final KeyEvent ke) {

JTextField source = (JTextField) ke.getSource();

if (ke.getKeyCode() == KeyEvent.VK_TAB) {

if (source.getText().length() >= 5) {

System.out.println("Tab with valid text, transferring focus");

source.transferFocus();// or someButton.requestFocus()

} else {

System.out.println("Tab with invalid text");
}

}

}

});


contentPane.add(textField);
contentPane.add(someButton);
fr.setContentPane(contentPane);

fr.pack();
fr.setVisible(true);

关于Java - requestFocus当前元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43386349/

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