巧妙处理Swing模态框setVisible(true)线程阻塞的问题

模态框的学习

假设存在这样场景:我登录lol页面的时候,一区人很多,我连着点登陆,客户端没给我反应。竟然没反应,然后我就疯狂点登陆,假设lol服务器无法处理这种重复命令,那么lol的服务器反应过来的时候,可能我已经点了n次登陆了,那么服务器就要处理很多没有意义的登陆指令。这是一个假设,是为了说明,用户操作的不当,会造成服务器雪上加霜的情况。
所以我们就要设计一个东西,来阻止用户的无理取闹,我的方式就是用模态框,当你进行点击登陆操作后,弹出一个模态框,对于模态框外面的界面,你不能在点了!模态框显示正在帮你处理,你别着急,这就有效的处理了刚才假设的情况。
下面贴一个模态框的代码:
继承自JDialog 类,当创建这个对象时,当传入参数是true时,表示这是一个模态框。

public class MDialog extends JDialog {
   
	private static final long serialVersionUID = -3666711423943333589L;

	public MDialog(Frame owner, boolean modal) {
   
		super(owner, modal);
	}

	public MDialog(Dialog owner, boolean modal) {
   
		super(owner, modal);
	}

	public MDialog(Frame owner, String title, boolean modal) {
   
		super(owner, title, modal);
	}

	public MDialog(Dialog owner, String title, boolean modal) {
   
		super(owner, title, modal);
	}
	
	public MDialog setCaption(String context) {
   
		Font font = new Font("宋体", Font.BOLD, 16);
		int width = (context.length() + 4) * font.getSize();
		int height = 5 * font.getSize();
		
		setSize(width, height);
		setLocationRelativeTo(getOwner());
		setLayout(null);
		setUndecorated(true);
		
		JPanel jpnlMessage = new JPanel();
		jpnlMessage.setSize(width, height);
		jpnlMessage.setLayout(new BorderLayout());
		jpnlMessage.setBackground(Color.lightGray);
		jpnlMessage.setBorder(</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值