有一种喜欢,是对javafx的喜欢,你遇见我,有了弹出窗口的新用法。

scene builder 入门使用方法

废话不多说,先看效果图,看看是不是你们想要的那种效果:

在这里插入图片描述

图片中有两个不同的提示,都在点击了某一个事件后消失了,但是这两种看上去的效果一样呀!
其实只是看上去一样,其实并不一样,是两种不同的机制,处理起来也是不同的。

1.其实第一个要实现相对会简单一些。
*在这里插入图片描述
那些文字我是使用了一个VBOX再加上一些label组成。

  1. 首先我将这些控件的Visible属性默认设置为true.
  2. 当我点击了Get it,我就通过调用一个方法将这些Visible的属性设置为false,这样就可以起到一个隐藏效果了
	//让提示消失
	public void Hideknow(ActionEvent event) {
		
		//对应的是将说明的那个VBOX给隐藏
		explain.setVisible(false);
		//将Get it 按钮给隐藏
		GetButton.setVisible(false);
	}

上面的方法虽然实现起来不能,效果也还行。但是有一个缺点,如果我想做到,如果你不点击Get it,就不能进行其他的操作,这个方法就无法做到了。(可能有其他的方法可以做到。。。)

如何解决这个缺点呢?下面我有另外一种方法可以做到。

2. 第二种是通过弹出新的窗口实现
通过方法一个方法调用,然后弹出另外一个窗口。再弹出另外一个窗口的同时,将当前的窗口的MouseTransparent属性为true这样当前的窗口就不能进行任何的点击操作了。当关闭弹出的窗口又可以设置为false 。这样就达到了上面方法所说的无法做到的功能了。

  1. 先通过调用方法将mainpane.setMouseTransparent(false);将mainpane的窗口设置为鼠标不可操作
  2. 再通过方法弹出另一个窗口。
  3. 当关闭弹出的窗口同时将mainpane.setMouseTransparent(true)
    ** 还有一个重要的问题是如何做到只关闭当前的窗口!!!
    有一个方法:((Node) (event.getSource())).getScene().getWindow().hide() 只是关闭当前的窗口的方法。
    **
public void ok(ActionEvent event) {
		//将mainpane的窗口设置为鼠标可操作
		new MyController().contron();
		//只是关闭当前的窗口的方法
		 ((Node) (event.getSource())).getScene().getWindow().hide();
	}
/*
	primaryStage.initStyle(StageStyle.UNDECORATED);//设置成一个无边框的stage
    primaryStage.initStyle(StageStyle.TRANSPARENT);//将边框设置成透明的
*/

在这里插入图片描述
上面那两种去框的方法实际的效果并没有什么太大的区别。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值