2015-07-10 58 views
1

我一直在做一個按鈕擴展類,當左鍵單擊時,在按鈕的可配置側/角上顯示保持打開彈出菜單(ContextMenu對象)。構造函數接受一個像NORTH_LEFT這樣的枚舉值,它指示按鈕所在的那一邊,以及按鈕和彈出框上的哪些邊對齊。換句話說,2應該總是顯示爲L形組合,而不是T形。如何去除JavaFX ContextMenu周圍的陰影邊界?

所以,當我想要做這樣的事情EAST_BOTTOM其中兩個按鈕,彈出窗口的底部邊緣應該對齊,我估計像這樣的工作:

PopupMenu.show(this, Side.RIGHT, 0, this.getHeight() - PopupMenu.getHeight()); 

但我得到的是出現太大的彈出應該高一些。這是因爲PopupMenu.getHeight()調用正在返回一個更大的值,然後是預期的。我懷疑是因爲它的尺寸包含了很大的陰影邊界。我注意到,這個半可見的邊框也延伸到我的按鈕上,並防止在菜單附近的按鈕邊緣註冊鼠標點擊。所以我有很多理由想要一個0寬度的邊框。

我認爲有一種方法可以通過CSS來實現。我試過將-fx-background-insets和-fx-padding設置爲0,但這兩者似乎都沒有什麼區別。還有其他建議嗎?

+0

您是否檢查過[this](http://stackoverflow.com/a/25437004/3956070)?是同一個問題? –

+0

我確實看到了這一點,而且我嘗試過使用.root.popup {}設置進行遊戲,但迄今爲止所做的任何操作都不會影響邊框的大小。 –

+0

圖片將有助於理解您的問題... –

回答

2

解決方案是將-fx-effect: null;添加到ContextMenu的CSS中。這將刪除作爲ContextMenus的modena.css默認設置的dropshadow效果。一旦我做到了,我就能夠正確地將我的菜單放在需要的地方。

此工作答案的信用轉到JoséPereda--我們在上面的評論中提到了這一點。