使用InputVerifier
从javadocs,
每当组件即将失去焦点时,都会查询组件的输入验证器。如果组件的值不可接受,则输入验证器可以采取适当的措施,例如拒绝让焦点在组件上或用最后一个有效值替换用户的输入,然后允许焦点转移到下一个组件。但是,当焦点转移到另一个顶级组件时,不会调用InputVerifier 。
这是一个基于您的示例代码,如果文本字段为空,则该代码会阻止跳转到另一个文本字段
import javax.swing.*;
import java.awt.*;
public class FoucsDemo
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new FoucsDemo();
}
});
}
FoucsDemo()
{
JFrame jFrame=new JFrame("Input Verifier");
jFrame.setLayout(new GridLayout(2,1,1,5));
JTextField jTextField1=new JTextField(10);
JTextField jTextField2=new JTextField(10);
jTextField1.setInputVerifier(new Verify());
jTextField2.setInputVerifier(new Verify());
jFrame.add(jTextField1);
jFrame.add(jTextField2);
jFrame.pack();
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jFrame.setVisible(true);
}
class Verify extends InputVerifier
{
@Override
public boolean verify(JComponent input)
{
return !((JTextField) input).getText().equals("");
}
}
}