2012-03-25 26 views
17

JavaFX destop uygulamasını yapıyorum. Varsayılan windows sınırını kaldırmak istiyorum ve ayrıca en az 3 standart simge özelleştirmek, en üst düzeye çıkarmak ve kapatmak istiyorum.JavaFX primaryStage windows sınırlarını kaldırır mı?

görünüyor veya özelleştirme bu tür orijinal motivasyon Böyle bir şey tasarlamak istiyorum .... yeni Kaspersky 2012 Kullanıcı Arayüzü olduğunu ... :)

+1

Asıl soru, asıl soru olduğu zaman bir soruyu yinelenen olarak işaretlemektir. – Haggra

+0

Kendi pencerenizi tasarlıyorsanız lütfen çok muhafazakar olun ve her bir yerel platformun tasarımına bir şekilde yapışmaya çalışın. Onu vidalamak ve ucuz bir hile gibi görünmesini inanılmaz derecede kolaydır. – RecursiveExceptionException

cevap

29

Bu örnek iyi bir başlangıç ​​noktası olabilir. Tüm pencere dekorasyonu kaldırıldı. Standart pencere işlemleri için özel düğmeler yerleştirmek üzere HBox numaralı bir sınıf kullanılabilir.

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(); 
    } 
} 

Ayrıca daha birçok kullanışlı örnek bulabilirsiniz JavaFX Samples indirebilirsiniz.

+0

Yukarıdaki örnek için teşekkürler .. – dhroove

+1

Harika cevap. 1! Ama ya pencereyi hala ekranın etrafında hareket ettirmek isteseydi? – 735Tesla

+2

Bu sorunun cevabını burada bulabilirsiniz: http://stackoverflow.com/questions/11780115/moving-an-undecorated-stage-in-javafx-2 – 735Tesla