मैं एक अलग सीएसएस फ़ाइल का उपयोग कर ContextMenu
आइटम की शैली बदलने की कोशिश कर रहा हूं। मैं caspian.css अनुभाग को देखा और निम्नलिखित परिभाषा पाया:सीएसएस का उपयोग कर जावाएफएक्स कॉन्टेक्स्टमेनू के लिए शैली को आप कैसे सेट करते हैं?
- .context-मेनू
- .context-मेनू .separator
- .context-मेनू .scroll-तीर
- .context- मेनू .scroll-तीर: मंडराना
- .context-मेनू: शो-स्मृति सहायकों .mnemonic-रेखांकन
मैं बिल्कुल मेरी सीएसएस फ़ाइल के लिए अधिक उम्र के लोगों की नकल की और सिर्फ पृष्ठभूमि रंग बदल परीक्षण के रूप में मूल्य:
.context-menu {
-fx-skin: "com.sun.javafx.scene.control.skin.ContextMenuSkin";
-fx-background-color: #006699;
-fx-background-insets: 0, 1, 2;
-fx-background-radius: 0 6 6 6, 0 5 5 5, 0 4 4 4;
/* -fx-padding: 0.666667em 0.083333em 0.666667em 0.083333em; 8 1 8 1 */
-fx-padding: 0.333333em 0.083333em 0.666667em 0.083333em; /* 4 1 8 1 */
}
.context-menu .separator {
-fx-padding: 0.0em 0.333333em 0.0em 0.333333em; /* 0 4 0 4 */
}
.context-menu .scroll-arrow {
-fx-padding: 0.416667em 0.416667em 0.416667em 0.416667em; /* 5 */
-fx-background-color: #006699;
}
.context-menu .scroll-arrow:hover {
-fx-background: -fx-accent;
-fx-background-color: #006699;
-fx-text-fill: -fx-selection-bar-text;
}
.context-menu:show-mnemonics .mnemonic-underline {
-fx-stroke: -fx-text-fill;
}
यह स्पष्ट रूप से काम नहीं करता है या मैं यहां नहीं होगा। ऐसा कोई प्रभाव नहीं पड़ता कि इससे कोई फर्क नहीं पड़ता कि मैं क्या मूल्य बदलता हूं।
मैं (के रूप में मैं यह बहुत अनाड़ी उपयोग करने के लिए लगता है की ओर ध्यान दें मैं एक अंतिम उपाय के रूप में इस्तेमाल किया,) देखने के लिए JavaFX दृश्य बिल्डर को खोल दिया। मैंने संदर्भ मेनू के लिए सीएसएस अनुभाग के स्टाइल करने योग्य हिस्सों के तहत देखा है जो CSSBridge[context-menu]
सूचीबद्ध है जो अजीब लगता है। लेबल जैसी अन्य चीजें Label[label]
हैं।
क्या कोई मुझे बता सकता है कि यहां क्या हो रहा है, क्योंकि यह संदर्भ मेनू के लिए मेरी सीएसएस फ़ाइल को अनदेखा कर रहा है और caspian.css में डिफ़ॉल्ट मानों का उपयोग कर रहा है?
अटैच किया जा रहा नमूना FXML फ़ाइल, सीएसएस और जावा कोड को चलाने के लिए।
Sample.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.net.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<AnchorPane fx:id="myroot" xmlns:fx="http://javafx.com/fxml">
<children>
<Label text="Right click for options">
<contextMenu>
<ContextMenu>
<items>
<MenuItem text="Help" />
<MenuItem text="Me" />
</items>
</ContextMenu>
</contextMenu>
</Label>
</children>
<stylesheets>
<URL value="@contextcolor.css" />
</stylesheets>
</AnchorPane>
contextcolor.css
.root {
-fx-background-color: cornsilk;
-fx-padding: 10;
}
.context-menu {
-fx-background-color: #006699;
-fx-text-fill: white;
}
.menu-item .label {
-fx-text-fill: yellow;
}
.menu-item:focused .label {
-fx-text-fill: white;
}
Test.java
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Test extends Application {
public static void main(String[] args) {
Application.launch(Test.class, args);
}
@Override
public void start(Stage stage) throws Exception {
System.out.println(com.sun.javafx.runtime.VersionInfo.getVersion());
Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
stage.setScene(new Scene(root));
stage.show();
}
}
की स्थापना, पृष्ठभूमि रंग, सीमा रंग बदल [यहाँ SceneBuilder पर प्रतिक्रिया] प्रदान करने में सक्षम हूँ https://forums.oracle.com/forums/thread .jspa? threadID = 2369765) – jewelsea
इस सप्ताहांत में क्या करेंगे। लिंक के लिए धन्यवाद। –