2012-10-13 7 views
16

私はウィンドウの外観を完全にカスタマイズしたアプリケーションを用意したいと思います。これまでのところ私は、私は典型的なウィンドウのものを削除することができますことを学びました:JavaFXは完全にカスタマイズされたウィンドウですか?

class Application extends javafx.application.Application { 
    /** 
    * Starts the application. 
    * 
    * @param stage 
    */ 
    override def start(stage: Stage) { 
    stage.initStyle(StageStyle.TRANSPARENT) 

    // Load the main window view. 
    val loader = new FXMLLoader() 
    loader.setLocation(getClass.getResource("/com/myproj/application/MainWindow.fxml")) 

    val root = loader.load().asInstanceOf[Parent] 
    val scene: Scene = new Scene(root, Color.TRANSPARENT) 

    stage.setScene(scene) 
    stage.show() 
    } 
} 

それ以外はすべてそのウィンドウのドラッグを除いて、正常に動作し、ダブルクリック・ツー・最大化、Windows上で上端をスクリーニングするためにドラッグするべきアクティブ最大化など。ネイティブウィンドウ機能は完全に欠落しています。

これらの優れた機能をすべて失うことなく、どうやら簡単にウィンドウの外観全体をカスタマイズできますか?

私はAdobe Photoshopのように全く違って見えますが、これらの機能を保持しています(または手動でUIの上に実装しています)。

私は少なくとも先駆けのためにドラッグ&ウィンドウボタンを実装することができます。私はここでLinux、Mac、Windowsをターゲットにしています。

答えて

15

ソースコードを含むEnsemble Sample applicationのカスタマイズされたウィンドウの外観と操作を参照してください。 sourceをダウンロードしてビルドし、ブラウザに埋め込まずにスタンドアロンアプリケーションとして実行します。それはあなたが求めているものではありません。なぜなら、画面の上端にドラッグして最大化を有効にするようなものは、私が考えるようには動作しませんが、非常に近いはずです。それが上端の近くにドラッグされたとき。アンサンブルウィンドウには、カスタムリサイズデコレーション、最小化、最大化、閉じるアイコン、ウィンドウの上部にあるウィンドウをドラッグしてウィンドウを最大化または最小化するためのダブルクリックなどの機能があります。デスクトップウィンドウシステムから期待されるでしょう。

あなたが求めているものにさらに近くなるようにするには、おそらく2つのウィンドウを作成して何かを一緒にハックすることができます。 1つは、標準的な装飾されたステージのウィンドウで、画面の境界線が含まれています。もう1つは、装飾されていない透明な子ステージが常にメインウィンドウの上部に表示され、メインウィンドウの境界線がカスタムレンダリングでオーバーレイされています。私はあなたがこのアプローチを実装しようとすると難しいかもしれないと思うので、私は本当にそれをお勧めしません。

TRANSPARENTではなく、非自発的なステージスタイルを試して、WindowsとのネイティブのWindows統合が改善されているかどうかを確認してください。

現在実装されたときに、おそらくあなたがあなたの目標をacheiveするのに役立ちます、JDK8、Windows: support Aero Glass effects for top-level windowsMac: Support NSTexturedBackgroundWindowMask style for windowsThe solid white background created in a Stage should be created - if needed - in the Scenegraph、に同梱されるようにJavaFXのために予定いくつか開いている機能のリクエストがあります - 彼らのために投票を、そのような特徴がにとって重要である場合には、君は。

Ensemble Sample Application

またJavaFXのためのオープン・ソース・ウィンドウ・フレームワークであるチェックアウトVFXWindows。また、関連

更新

あなたは簡単に標準でJavaFXの段階を作成することができますUndecoratorプロジェクトが最小化/最大化である/クローズ/ JavaFXのエンジンではなく、OSのウィンドウシステムを経由してレンダリングされたクロムのコントロールのサイズを変更。これにより、アンサンブルのようなアプリケーションで表示されるウィンドウレンダリングに対して、カスタムコントロールを実現することができます。

+1

デコレーター[サンプルカスタムデコレータ](https://gist.github.com/JaDogg/4d9999ba233f4a43b7c5)を使用しない場合は、 –

関連する問題