用JOptionPane弹出对话框后,总是有焦点的,按回车就能让该对话框消失。
面临的问题是:录入人员在小键盘上打数字和回车来录入数据,当打错的时候弹出一个对话框来提示错误,但此时录入员没有抬头看而是一直录下去,这样就录错了。
我想让JOptionPane显示时焦点不在按钮上,这样不管录入员继续输什么都不会进行下去了。请问大家该怎样实现这种效果?
面临的问题是:录入人员在小键盘上打数字和回车来录入数据,当打错的时候弹出一个对话框来提示错误,但此时录入员没有抬头看而是一直录下去,这样就录错了。
我想让JOptionPane显示时焦点不在按钮上,这样不管录入员继续输什么都不会进行下去了。请问大家该怎样实现这种效果?
楼上能给出具体代码吗?谢谢。
重写JDialog,模拟JOptionPane界面,此时可以调用背面Container的setfocus()函数或者tofront()使得焦点仍在背面的container上
import java.awt.*;public class MessageDialog extends JDialog
{
private static MessageDialog dlg = null;
public static void showMessageDialog( Frame owner , String info )
{
if( dlg == null )
{
dlg = new MessageDialog( owner , info );
}
else
{
dlg.setInfo( info );
}
dlg.setVisible( true );
}
public MessageDialog( Frame owner , String info )
{
super( (Frame)owner , "信息窗口" );
lbl = new JLabel( info );
getContentPane().add( lbl );
pack();
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
int height = new Double( d.getHeight()/2 - getHeight()/2 ).intValue();
int width = new Double( d.getWidth()/2 - getWidth()/2 ).intValue();
setBounds( width , height , 160 , 80 );
this.setModal( true );
}
public void setInfo( String info )
{
lbl.setText( info );
}
JLabel lbl = null;
public static void main( String[] args )
{
JFrame f = new JFrame();
f.setSize( 640 , 480 );
f.setVisible( true );
MessageDialog.showMessageDialog( f , "warning!!!" );
}
}