2017-01-28 9 views
0

私は質問があり、本当に助けと答えがありがとう。 これは私の問題です: 私はedmunds APIで作業しています、私はすでにクラスを作成し、私は私のクラスのオブジェクトで私のJSONデータを解析することができます。 今、私はScrollpaneとしてそれらのオブジェクトを表示したい、私は、私のオブジェクトの属性の名前を含むラベルで、すべてのオブジェクトのHBOXを作成するためのブール "for"を作成しました。 これまでHBOXsとscrollpaneのデータを表示するのは成功しましたが、HBoxsだけで、HBoXを選択することはできません。 私のスクロールペインでは、bmw.audiのように車のメイクを表示します。たとえばbmwのHBOxを選択すると、このメイクのすべてのモデルを表示したいだけです。JavafxとJava

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Make { 

    @JsonProperty("id") 
    private int mk_id ; 
    @JsonProperty("name") 
    private String mk_name; 
    @JsonProperty("niceName") 
    private String mk_nicename; 
    @JsonProperty("models") 
    private List<Model> list_modele; } 

私のクラスのモデル::

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Model { 

    @JsonProperty("id") 
    private String md_id ; 
    @JsonProperty("name") 
    private String md_name; 
    @JsonProperty("niceName") 
    private String md_nicename; 
    @JsonProperty("years") 
    private List<Years> list_years;} 

とは私のブークレ:

ちょうどあなたがunderstansが何か

をしない場合は、これを "作る" 私のクラスで教えてください

@FXML public void btn_clicked (javafx.event.ActionEvent e) 
    { 


     All_makes t = (All_makes)newparse_object <All_makes>(All_makes.class).ParseUri("https://api.edmunds.com/api/vehicle/v2/makes?state=new&fmt=json&api_key=wdxg7wh338vac3359m34qjj6"); 
     HBox o = new HBox(); 
     for(int i =0 ; i< t.get_list_makes().size();i++) 
     { 
     VBox b = new VBox(10); 
     Label label = new Label(t.get_list_makes().get(i).get_mk_name()); 
     Label label2 = newLabel(t.get_list_makes().get(i).get_mk_nicename()); 
     b.getChildren().addAll(label, label2); 
     b.setMaxSize(100, 100); 
     o.getChildren().add(b); 
     } 
     o.maxWidth(5); 
     scroll_pane.setContent(o); 

} 
+0

[ 'ListView'](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ListView.html)を使用しないのはなぜ? –

+0

私はリストのようなアイテムを表示したくないので、ボックスのように表示したい。 写真と名前が付いている5つのボックスが並んでいます –

+0

リストビューでこれを行うことができます –

答えて

0

ListViewは、選択機能と、スクロールアウトボックス。ここでは簡単な例です:

import javafx.application.Application; 
import javafx.geometry.Orientation; 
import javafx.scene.Scene; 
import javafx.scene.control.Label; 
import javafx.scene.control.ListCell; 
import javafx.scene.control.ListView; 
import javafx.scene.layout.StackPane; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class ListViewExample extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     ListView<Make> listView = new ListView<>(); 
     listView.setOrientation(Orientation.HORIZONTAL); 

     listView.setMaxHeight(100); 

     listView.setCellFactory(lv -> new ListCell<Make>() { 
      private Label nameLabel = new Label(); 
      private Label niceNameLabel = new Label(); 
      private VBox vbox = new VBox(nameLabel, niceNameLabel); 

      { 
       vbox.setMaxSize(100, 100); 
      } 

      @Override 
      protected void updateItem(Make make, boolean empty) { 
       super.updateItem(make, empty); 
       if (empty) { 
        setGraphic(null); 
       } else { 
        nameLabel.setText(make.getMk_name()); 
        niceNameLabel.setText(make.getMk_nicename()); 
        setGraphic(vbox); 
       } 
      } 
     }); 

     listView.getSelectionModel().selectedItemProperty().addListener((obs, oldMake, newMake) -> { 
      System.out.println(newMake.getMk_name() + " selected"); 
     }); 

     for (int i = 1 ; i <= 10 ; i++) { 
      Make make = new Make(); 
      make.setMk_name("Make "+i); 
      make.setMk_nicename("Description of make "+i); 
      listView.getItems().add(new Make("Make "+i, "Description of make "+i)); 
     } 

     Scene scene = new Scene(new StackPane(listView)); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

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

James、ありがとうございました。私の考えは最初は複雑でしたが、Listviewのサウンドは簡単な効率的なアイデアのように聞こえます。良い一日を –

関連する問題