2012-03-25 32 views
17

私はJavaFXデソップアプリケーションを作っています。私は、デフォルトのウィンドウの境界線を削除したいと思うし、最小化、最大化、終了の3つの標準アイコンをカスタマイズしたい。JavaFXのprimaryStageはウィンドウ枠を削除しますか?

ルックスやカスタマイズのこの種の本来の動機は、私はそのような何かをデザインしたい....新しいカスペルスキー2012のユーザーインターフェイスである... :)

+1

実際に元の質問だったときに質問を重複としてマークするのはどのように非論理的ですか。 – Haggra

+0

独自のウィンドウをデザインする場合は、非常に保守的で、各ネイティブプラットフォームの設計に多少固執してください。それを台無しにして安いギミックのように見えるのは信じられないほど簡単です。 – RecursiveExceptionException

答えて

29

この例では、良い出発点かもしれません。すべてのウィンドウの装飾が削除されます。 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をダウンロードして、より多くの有用な例を見つけることができます。

+0

上記の例をありがとう.. – dhroove

+1

偉大な答え。 +1!しかし、画面の周りでウィンドウを動かしたいと思ったらどうでしょうか? – 735Tesla

+2

ここでその答えを見つけても大丈夫です:http://stackoverflow.com/questions/11780115/moving-an-undecorated-stage-in-javafx-2 – 735Tesla

関連する問題