2016-04-04 46 views
3

enter image description hereJavaFX Sınır Başlık

Bu, yukarıda resim ben aşağıdaki gibi istiyorum benim code.But sonucudur.
enter image description here

Nasıl düzeltebilirim? Aşağıdaki kodum. Çok fazla kaynak okuyorum ama çok karmaşıktı. Örneğin, a source that I read, bence bu şekilde çok karmaşıktır. Bu sorunu çözmenin kolay bir yolu vardır.

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.GridPane; 
import javafx.scene.layout.StackPane; 
import javafx.scene.layout.VBox; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 

public class Test extends Application { 

    public BorderPane border = new BorderPane(); 

    public Label name = new Label("Name"); 
    public Label surname = new Label("Surname"); 

    public TextField name1 = new TextField(); 
    public TextField surname1 = new TextField(); 

    public static void main(String[] args) { 
     launch(args); 

    } 

    @Override 
    public void start(Stage arg0) throws Exception { 
     Scene scene = new Scene(new VBox(), 300, 200); 
     arg0.setTitle("Header"); 
     arg0.setResizable(false); 
     scene.setFill(Color.OLDLACE); 

     StackPane grid = addStackPane(); 
     border.setMargin(grid, new Insets(12,12,12,12)); 
     border.setCenter(grid); 

     ((VBox) scene.getRoot()).getChildren().add(border); 
     arg0.setScene(scene); 
     arg0.show(); 

    } 

    @SuppressWarnings("static-access") 
    public StackPane addStackPane() { 
     StackPane pane = new StackPane(); 
     GridPane grid = new GridPane(); 
     Label title = new Label("Border Title"); 
     title.setStyle("-fx-translate-y: -7"); 
     pane.setAlignment(title, Pos.TOP_LEFT); 
     grid.setStyle("-fx-content-display: top"); 
     grid.setStyle("-fx-border-insets: 20 15 15 15"); 
     grid.setStyle("-fx-background-color: white"); 
     grid.setStyle("-fx-border-color: black"); 
     grid.setHgap(10); 
     grid.setVgap(10); 
     grid.setPadding(new Insets(25, 10, 25, 10)); 
     grid.add(name, 1, 0); 
     grid.add(name1, 2, 0); 

     grid.add(surname, 1, 1); 
     grid.add(surname1, 2, 1); 
     pane.getChildren().addAll(grid, title); 

     return pane; 
    } 

} 

Bu konuyu okuyan herkese teşekkür ederiz.

cevap

4

Başlık etiketinizin -fx-background-color kenarlık etiketinin borderPane'in arka planıyla aynı renge ayarlamaya çalışın. Eğer bunları bağlamak sürece setStyle() yoluyla birden stilleri ayarlamak mümkün değildir çünkü, emin bir css dosyasında belirlenen olun:

myComponent.setStyle("-fx-text-fill: white;"+ 
    "-fx-background-color: black;"); 

Dahası her zaman bir daha yüksek önceliğe sahip olduğu bir InlineStyleSheets kullanmak kötü bir uygulamadır CSS Stil Sayfası'nda belirtilen kural.

(eğer pane.setAlignment(title, Pos.TOP_LEFT) StackPane.setAlignment(title, Pos.TOP_LEFT) için değiştirirseniz "statik acces" uyarısı kaldırabilir.)

+0

Çok teşekkür ederim. Bu yorum benim için çok faydalıdır. @jns – ZpCikTi