Sole Zweck dieser Klasse ist undecorated Fenster zu ermöglichen gezogen werden. Es führt auch die Pflicht durch, sicherzustellen, dass TaskBar mit FullScreen sichtbar bleibt, und stellt sicher, dass das nicht verzierte Fenster nicht aus dem Bildschirm gezogen wird. Schließlich bietet es eine Fehlerbehebung für den Fehler "CSS-Ressource nicht gefunden." Einfach einfügen unter Code in der Hauptklasse in der überschriebenen start() -Methode, gerade wenn die Bühne über READY angezeigt wird oder nach.
HINWEIS: Fügen Sie die obigen, wenn die Bühne über BEREIT ist, um gezeigt oder nach. Für die Verwendung Vollbild-Fensters:
WindowStyle.fullScreen(Stage stage);
Um zum vorherigen Gebrauch der Größe zurück:
WindowStyle.restoreScreen(Stage stage);
benutzerdefinierte Stylesheets in der Szene hinzuzufügen, fügen Sie einfach Code unten in der Hauptklasse in dem überschriebenen start() Methode nach dem Definieren Ihrer Szene.
scene.getStylesheets().add(WindowStyle.addStyleSheet(String css));
Der Name von CSS für Styling verwendet werden kann in der Form: alle zusammen
import javafx.geometry.Rectangle2D;
import javafx.scene.Parent;
import javafx.scene.input.MouseEvent;
import javafx.stage.Screen;
import javafx.stage.Stage;
/**
* @author: BENJAH
*/
public class WindowStyle {
private static final Rectangle2D SCREEN_BOUNDS= Screen.getPrimary()
.getVisualBounds();
private static double[] pref_WH, offset_XY;
private static String styleSheet;
private WindowStyle(String css) {
styleSheet= getClass().getResource(css).toString();
}
protected static void allowDrag(Parent root, Stage stage) {
root.setOnMousePressed((MouseEvent p) -> {
offset_XY= new double[]{p.getSceneX(), p.getSceneY()};
});
root.setOnMouseDragged((MouseEvent d) -> {
//Ensures the stage is not dragged past the taskbar
if (d.getScreenY()<(SCREEN_BOUNDS.getMaxY()-20))
stage.setY(d.getScreenY() - offset_XY[1]);
stage.setX(d.getScreenX() - offset_XY[0]);
});
root.setOnMouseReleased((MouseEvent r)-> {
//Ensures the stage is not dragged past top of screen
if (stage.getY()<0.0) stage.setY(0.0);
});
}
//Sets the default stage prefered width and height.
protected static void stageDimension(Double width, Double height) {
pref_WH= new double[]{width, height};
}
protected static void fullScreen(Stage stage) {
stage.setX(SCREEN_BOUNDS.getMinX());
stage.setY(SCREEN_BOUNDS.getMinY());
stage.setWidth(SCREEN_BOUNDS.getWidth());
stage.setHeight(SCREEN_BOUNDS.getHeight());
}
protected static void restoreScreen(Stage stage) {
stage.setX((SCREEN_BOUNDS.getMaxX() - pref_WH[0])/2);
stage.setY((SCREEN_BOUNDS.getMaxY() - pref_WH[1])/2);
stage.setWidth(pref_WH[0]);
stage.setHeight(pref_WH[1]);
}
protected static String addStyleSheet(String css) {
new WindowStyle(css);
return styleSheet;
}
}
Ist die obige Eigenschaft
main.css
oderstyles/main.css
versteckt die Titelleiste? Wie planen Sie, das Fenster zu ziehen? – SoulManJa NeilGhosh, die obige Eigenschaft verbirgt die gesamte Titelleiste. –