javafx
सीएसएस
खोज…
वाक्य - विन्यास
- नोड्स क्लास * / चयनकर्ता नोड्स क्लास * / द्वारा
- .someclass / * चयनकर्ता वर्ग के द्वारा * /
- #someId / * selector by id * /
- [selector1]> [selector2] / * एक नोड के सीधे बच्चे के लिए चयनकर्ता, जो selector1 से मेल खाता है, जो selector2 * / से मेल खाता है
- [selector1] [selector2] / * एक मिलान मिलान selector1 के वंशज के लिए चयनकर्ता जो चयन 2 / / से मेल खाता है
स्टाइल के लिए CSS का उपयोग करना
CSS को कई स्थानों पर लागू किया जा सकता है:
- इनलाइन (
Node.setStyle
) - एक स्टाइलशीट में
- एक
Scene
- उपयोगकर्ता एजेंट स्टाइलशीट के रूप में (यहाँ प्रदर्शित नहीं)
-
Scene
लिए "सामान्य" स्टाइलशीट के रूप में
- एक
Node
- एक
यह Nodes
की शैलीगत गुणों को बदलने की अनुमति देता है। निम्न उदाहरण यह प्रदर्शित करता है:
आवेदन वर्ग
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class StyledApplication extends Application {
@Override
public void start(Stage primaryStage) {
Region region1 = new Region();
Region region2 = new Region();
Region region3 = new Region();
Region region4 = new Region();
Region region5 = new Region();
Region region6 = new Region();
// inline style
region1.setStyle("-fx-background-color: yellow;");
// set id for styling
region2.setId("region2");
// add class for styling
region2.getStyleClass().add("round");
region3.getStyleClass().add("round");
HBox hBox = new HBox(region3, region4, region5);
VBox vBox = new VBox(region1, hBox, region2, region6);
Scene scene = new Scene(vBox, 500, 500);
// add stylesheet for root
scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
// add stylesheet for hBox
hBox.getStylesheets().add(getClass().getResource("inlinestyle.css").toExternalForm());
scene.setFill(Color.BLACK);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
inlinestyle.css
* {
-fx-opacity: 0.5;
}
HBox {
-fx-spacing: 10;
}
Region {
-fx-background-color: white;
}
style.css
Region {
width: 50;
height: 70;
-fx-min-width: width;
-fx-max-width: width;
-fx-min-height: height;
-fx-max-height: height;
-fx-background-color: red;
}
VBox {
-fx-spacing: 30;
-fx-padding: 20;
}
#region2 {
-fx-background-color: blue;
}
नए शैलीगत गुणों को जोड़ते हुए आयत का विस्तार करना
JavaFX 8
निम्न उदाहरण दर्शाता है कि कस्टम गुणों को कैसे जोड़ा जाए जो सीएसएस से एक कस्टम Node
स्टाइल किया जा सकता है।
यहाँ 2 DoubleProperty
s को CSS से width
और height
सेट करने की अनुमति देने के लिए Rectangle
वर्ग में जोड़ा गया है।
निम्नलिखित CSS का उपयोग कस्टम नोड को स्टाइल करने के लिए किया जा सकता है:
StyleableRectangle {
-fx-fill: brown;
-fx-width: 20;
-fx-height: 25;
-fx-cursor: hand;
}
कस्टम नोड
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javafx.beans.property.DoubleProperty;
import javafx.css.CssMetaData;
import javafx.css.SimpleStyleableDoubleProperty;
import javafx.css.StyleConverter;
import javafx.css.Styleable;
import javafx.css.StyleableDoubleProperty;
import javafx.css.StyleableProperty;
import javafx.scene.paint.Paint;
import javafx.scene.shape.Rectangle;
public class StyleableRectangle extends Rectangle {
// declaration of the new properties
private final StyleableDoubleProperty styleableWidth = new SimpleStyleableDoubleProperty(WIDTH_META_DATA, this, "styleableWidth");
private final StyleableDoubleProperty styleableHeight = new SimpleStyleableDoubleProperty(HEIGHT_META_DATA, this, "styleableHeight");
public StyleableRectangle() {
bind();
}
public StyleableRectangle(double width, double height) {
super(width, height);
initStyleableSize();
bind();
}
public StyleableRectangle(double width, double height, Paint fill) {
super(width, height, fill);
initStyleableSize();
bind();
}
public StyleableRectangle(double x, double y, double width, double height) {
super(x, y, width, height);
initStyleableSize();
bind();
}
private void initStyleableSize() {
styleableWidth.set(getWidth());
styleableHeight.set(getHeight());
}
private final static List<CssMetaData<? extends Styleable, ?>> CLASS_CSS_META_DATA;
// css metadata for the width property
// specify property name as -fx-width and
// use converter for numbers
private final static CssMetaData<StyleableRectangle, Number> WIDTH_META_DATA = new CssMetaData<StyleableRectangle, Number>("-fx-width", StyleConverter.getSizeConverter()) {
@Override
public boolean isSettable(StyleableRectangle styleable) {
// property can be set iff the property is not bound
return !styleable.styleableWidth.isBound();
}
@Override
public StyleableProperty<Number> getStyleableProperty(StyleableRectangle styleable) {
// extract the property from the styleable
return styleable.styleableWidth;
}
};
// css metadata for the height property
// specify property name as -fx-height and
// use converter for numbers
private final static CssMetaData<StyleableRectangle, Number> HEIGHT_META_DATA = new CssMetaData<StyleableRectangle, Number>("-fx-height", StyleConverter.getSizeConverter()) {
@Override
public boolean isSettable(StyleableRectangle styleable) {
return !styleable.styleableHeight.isBound();
}
@Override
public StyleableProperty<Number> getStyleableProperty(StyleableRectangle styleable) {
return styleable.styleableHeight;
}
};
static {
// combine already available properties in Rectangle with new properties
List<CssMetaData<? extends Styleable, ?>> parent = Rectangle.getClassCssMetaData();
List<CssMetaData<? extends Styleable, ?>> additional = Arrays.asList(HEIGHT_META_DATA, WIDTH_META_DATA);
// create arraylist with suitable capacity
List<CssMetaData<? extends Styleable, ?>> own = new ArrayList(parent.size()+ additional.size());
// fill list with old and new metadata
own.addAll(parent);
own.addAll(additional);
// make sure the metadata list is not modifiable
CLASS_CSS_META_DATA = Collections.unmodifiableList(own);
}
// make metadata available for extending the class
public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData() {
return CLASS_CSS_META_DATA;
}
// returns a list of the css metadata for the stylable properties of the Node
@Override
public List<CssMetaData<? extends Styleable, ?>> getCssMetaData() {
return CLASS_CSS_META_DATA;
}
private void bind() {
this.widthProperty().bind(this.styleableWidth);
this.heightProperty().bind(this.styleableHeight);
}
// -------------------------------------------------------------------------
// ----------------------- PROPERTY METHODS --------------------------------
// -------------------------------------------------------------------------
public final double getStyleableHeight() {
return this.styleableHeight.get();
}
public final void setStyleableHeight(double value) {
this.styleableHeight.set(value);
}
public final DoubleProperty styleableHeightProperty() {
return this.styleableHeight;
}
public final double getStyleableWidth() {
return this.styleableWidth.get();
}
public final void setStyleableWidth(double value) {
this.styleableWidth.set(value);
}
public final DoubleProperty styleableWidthProperty() {
return this.styleableWidth;
}
}
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow