有一種喜歡,是對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);//將邊框設置成透明的
*/

在這裏插入圖片描述
上面那兩種去框的方法實際的效果並沒有什麼太大的區別。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章