JavaFX Root边框与菜单边框相同

时间:2016-09-23 12:40:26

标签: java css javafx selector

继续开发我的GUI,我遇到了另一个问题。我已经在CSS文件中为我的.root设置了线性渐变作为边框,但似乎Menu类的元素以某种方式共享相同的属性,因为同样的线性效果也应用于这些。
enter image description here
如您所见,窗口底部是我告诉您的效果。看看左边的菜单,效果也适用于它,这是我不想发生的事情。 这是我的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;
}

1 个答案:

答案 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()); } } 属性。

这样可以阻止任何其他控件继承边框。