继续开发我的GUI,我遇到了另一个问题。我已经在CSS文件中为我的.root
设置了线性渐变作为边框,但似乎Menu
类的元素以某种方式共享相同的属性,因为同样的线性效果也应用于这些。
如您所见,窗口底部是我告诉您的效果。看看左边的菜单,效果也适用于它,这是我不想发生的事情。
这是我的css文件。根标记为.root
,该菜单标记为.context-menu
.root{//here
-fx-background-color: #2D2E32;
-fx-font-size: 12px;
-fx-background-insets: 0 0 0 0, 0, 4, 4;
-fx-border-color: linear-gradient(transparent, #32739B);
}
#file{
-fx-background-color: linear-gradient(#494C58, #3E3F43);
}
#file .label{
-fx-text-fill: #EAEAEA;
}
.context-menu{//and here
-fx-background-color: #3E3F43;
}
#closeButton, #minimizeButton, #maximizeButton{
-fx-background-radius: 0;
-fx-background-color: linear-gradient(#494C58, #3E3F43);
-fx-text-fill: #ffffff;
-fx-font-weight: bold;
-fx-background-insets: 0 0 0 0, 0, 1, 2;
}
#closeButton:hover{
-fx-background-color: #E46458;
}
#minimizeButton:hover{
-fx-background-color: #80B1E0;
}
#maximizeButton:hover{
-fx-background-color: #80E089;
}
.menu-item:hover, menu-item:focus{
-fx-background-color: #69757A;
}
.menu{
}
.menu:hover{
-fx-background-color: #69757A;
}
.label{
-fx-text-fill: #ffffff;
}
.button{
-fx-background-radius: 0;
}
#submit{
-fx-background-color: #3F494D;
-fx-background-insets: 0 0 0 0, 0, 4, 4;
-fx-text-fill: #fff;
-fx-font-weight: bold;
-fx-border-color: #32739B;
}
#submit:hover{
-fx-background-color: #32739B;
}
.text-field{
-fx-background-radius: 0;
}
#forgot{
-fx-background-color: transparent;
-fx-text-fill: #818181;
}
.separator{
-fx-background-color: #363636;
-fx-background-insets: 0,1,2,0;
}
答案 0 :(得分:2)
问题来自样式类Node
:
.root样式类应用于Scene的根节点 实例。因为场景图中的所有节点都是其后代 根节点,.root样式类中的样式可以应用于任何节点。
因此,如果您在此类中定义边框颜色,则它将由任何.rootelement {
-fx-border-color: linear-gradient(transparent, #32739B);
-fx-border-width: 2;
}
继承。
您可以创建一个名称不同的新CSS类
BorderPane layout = new BorderPane();
layout.setTop(hBox);
layout.getStyleClass().add("rootelement");
并将布局的根元素设置为具有此样式类
-fx-border-color
然后,您可以从root
类中删除@Singleton
@LocalBean
@Startup
public class UpdateEJB {
@EJB
MeasureEJB measureEjb;
@Schedule(second = "*/1", minute = "*", hour = "*", persistent = false)
public void doWork() {
measureEjb.create(new Measure());
}
}
属性。
这样可以阻止任何其他控件继承边框。