scene builder 入門使用方法
廢話不多說,先看效果圖,看看是不是你們想要的那種效果:
圖片中有兩個不同的提示,都在點擊了某一個事件後消失了,但是這兩種看上去的效果一樣呀!
其實只是看上去一樣,其實並不一樣,是兩種不同的機制,處理起來也是不同的。
1.其實第一個要實現相對會簡單一些。
*
那些文字我是使用了一個VBOX再加上一些label組成。
- 首先我將這些控件的Visible屬性默認設置爲true.
- 當我點擊了Get it,我就通過調用一個方法將這些Visible的屬性設置爲false,這樣就可以起到一個隱藏效果了
//讓提示消失
public void Hideknow(ActionEvent event) {
//對應的是將說明的那個VBOX給隱藏
explain.setVisible(false);
//將Get it 按鈕給隱藏
GetButton.setVisible(false);
}
上面的方法雖然實現起來不能,效果也還行。但是有一個缺點,如果我想做到,如果你不點擊Get it,就不能進行其他的操作,這個方法就無法做到了。(可能有其他的方法可以做到。。。)
如何解決這個缺點呢?下面我有另外一種方法可以做到。
2. 第二種是通過彈出新的窗口實現
通過方法一個方法調用,然後彈出另外一個窗口。再彈出另外一個窗口的同時,將當前的窗口的MouseTransparent屬性爲true這樣當前的窗口就不能進行任何的點擊操作了。當關閉彈出的窗口又可以設置爲false 。這樣就達到了上面方法所說的無法做到的功能了。
- 先通過調用方法將
mainpane.setMouseTransparent(false);
將mainpane的窗口設置爲鼠標不可操作 - 再通過方法彈出另一個窗口。
- 當關閉彈出的窗口同時將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);//將邊框設置成透明的
*/
上面那兩種去框的方法實際的效果並沒有什麼太大的區別。