私はJavaFXデソップアプリケーションを作っています。私は、デフォルトのウィンドウの境界線を削除したいと思うし、最小化、最大化、終了の3つの標準アイコンをカスタマイズしたい。JavaFXのprimaryStageはウィンドウ枠を削除しますか?
ルックスやカスタマイズのこの種の本来の動機は、私はそのような何かをデザインしたい....新しいカスペルスキー2012のユーザーインターフェイスである... :)
私はJavaFXデソップアプリケーションを作っています。私は、デフォルトのウィンドウの境界線を削除したいと思うし、最小化、最大化、終了の3つの標準アイコンをカスタマイズしたい。JavaFXのprimaryStageはウィンドウ枠を削除しますか?
ルックスやカスタマイズのこの種の本来の動機は、私はそのような何かをデザインしたい....新しいカスペルスキー2012のユーザーインターフェイスである... :)
この例では、良い出発点かもしれません。すべてのウィンドウの装飾が削除されます。 HBox
を拡張したクラスを使用して、標準的なウィンドウ操作用のカスタムボタンを配置することができます。
package javafxdemo;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class JavaDemo extends Application {
public static void main(String[] args) {
launch(args);
}
class WindowButtons extends HBox {
public WindowButtons() {
Button closeBtn = new Button("X");
closeBtn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
Platform.exit();
}
});
this.getChildren().add(closeBtn);
}
}
@Override
public void start(Stage primaryStage) {
//remove window decoration
primaryStage.initStyle(StageStyle.UNDECORATED);
BorderPane borderPane = new BorderPane();
borderPane.setStyle("-fx-background-color: green;");
ToolBar toolBar = new ToolBar();
int height = 25;
toolBar.setPrefHeight(height);
toolBar.setMinHeight(height);
toolBar.setMaxHeight(height);
toolBar.getItems().add(new WindowButtons());
borderPane.setTop(toolBar);
primaryStage.setScene(new Scene(borderPane, 300, 250));
primaryStage.show();
}
}
また、JavaFX Samplesをダウンロードして、より多くの有用な例を見つけることができます。
実際に元の質問だったときに質問を重複としてマークするのはどのように非論理的ですか。 – Haggra
独自のウィンドウをデザインする場合は、非常に保守的で、各ネイティブプラットフォームの設計に多少固執してください。それを台無しにして安いギミックのように見えるのは信じられないほど簡単です。 – RecursiveExceptionException