2016-04-07 24 views
0

Seçim kutusuyla bir sahneyim var. Buradaki amaç, tüm sistem yazı tiplerini seçim kutusunda göstermektir. Şimdiye kadar tercih ettiğim gibi doğru yoldayım. Seçim kutusuna 1 tane çıkmayı başardım ama neden sadece 1?Bir Seçim Kutusundaki kullanılabilir tüm sistem yazı tiplerini listeleme

import javafx.application.Application; 
import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.stage.Stage; 
import javafx.scene.Scene; 
import javafx.scene.control.ChoiceBox; 
import javafx.scene.control.SingleSelectionModel; 
import javafx.scene.layout.Pane; 
import javafx.scene.text.Font; 

public class ChoiceBoxFonts extends Application 
{ 
    ObservableList<String> fontType; 
    ChoiceBox<String> fonts; 

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

    public void start(Stage primaryStage) 
    { 
     Pane root = new Pane(); 

     Font.getFamilies().stream().forEach(i ->{ 
      fontType = 
         FXCollections.observableArrayList(i 
          ); 
     }); 

     // New choicebox with observable arraylist fontType 
     fonts = new ChoiceBox<String> (fontType); 

     //SingleSelectionModel<String> selMod = fonts.getSelectionModel(); 

     root.getChildren().add(fonts); 
     Scene scene = new Scene(root,200,200); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

    } 
} 

deneyin amacı, seçim kutusundan bir yazı tipi seçin ve bu seçim ile bir metin nesnesinin yazı tipini değiştirmek edebilmek için - burada

kodudur.

Ayrıca, böyle bir şeyi yapabilmek için daha iyi bir kullanıcı arayüzü var mı? Bir kova yazı tipi yükü varsa, bu seçim kutusu çok uzun sürebilir!

+0

"Font.getFamilies() öğesinin her öğesi için," fontType "öğesini yalnızca bu öğeyi içeren bir listeye ayarlayın". Tüm bunları yaptıktan sonra, sadece son unsuru içeren bir listeye sahip olacaksınız. –

+0

HI, @James_D, bunu yaptığım şey mi? - "Font.getFamilies()" öğesinin her satırı için bu kod satırında - 'Font.getFamilies(). stream(). forEach (i -> { fontType = FXCollections.observableArrayList (i );' – Treeno1

+0

özür dileriz Bu yorumların biçimlendirilmesi için .. – Treeno1

cevap

2

Sadece yerine sahip olduğunuz tekrarlamanın

fontType = FXCollections.observableArrayList(Font.getFamilies()); 

gerekir.

Bir kepçe yükü tipi varsa, bu seçim kutusu çok uzun sürebilir!

Muhtemelen bir ListView düşünürdüm.

+0

thats harika, içine bakacağım. – Treeno1

İlgili konular