2016-04-19 18 views
0

Ich habe zwei hashmaps mit Daten von der twitter API. Ich möchte diese Daten in einer GUI anzeigen, wie sie in der Konsole angezeigt wird.Daten von HashMap in JavaFX anzeigen

Wie kann ich das tun? TableView ist eine Option, aber gibt es eine bessere Option?

HashMap<Integer, String> tweetName = new HashMap<>(); 
    HashMap<Integer, String> tweetText = new HashMap<>(); 


    for (int i = 0; i < tweets.size() - 97; i++) { 
     userName = tweets.get(i).getUser().getName(); 
     text = tweets.get(i).getText(); 
     tweetName.put(i, userName); 
     tweetText.put(i, text); 
    } 

    System.out.println(tweetName.get(0)); 
    System.out.println(tweetText.get(0)); 

Ich möchte wie diese in einem Format, Tweets und Benutzernamen angezeigt werden:

  1. [Name]

    [I tweeted gerade etwas]

  2. [Name2]

    [Ich twittere das]

Antwort

0

Als Ausgangspunkt vielleicht so etwas wie das:

public class Twitter extends Application { 

    @Override 
    public void start(Stage primaryStage) { 

     ListView<Message> listView = new ListView<>(); 
     listView.setCellFactory(lv -> new TwitterCell()); 
     listView.setItems(getMessages()); 

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

    private ObservableList<Message> getMessages() { 
     return FXCollections.observableArrayList(new Message("User1", "I just tweeted something sjködflk jskldjf slkd sdeklfjs kfjsl"), 
               new Message("User1", "I am tweeting this")); 
    } 

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

    public class Message { 

     private String userName; 
     private String content; 

     public Message(String userName, String content) { 
      this.userName = userName; 
      this.content = content; 
     } 

     public String getUserName() { 
      return userName; 
     } 

     public void setName(String name) { 
      userName = name; 
     } 

     public String getContent() { 
      return content; 
     } 

     public void setContent(String content) { 
      this.content = content; 
     } 
    } 

    public class TwitterCell extends ListCell<Message> { 
     private Label lblName; 
     private Label lblContent; 
     private VBox box; 

     public TwitterCell() { 
      setPrefWidth(100); 

      lblName= new Label(); 
      lblContent = new Label(); 

      lblContent.setWrapText(true); 
      box = new VBox(lblName, lblContent); 
     } 

     @Override 
     protected void updateItem(Message message, boolean empty) { 
      super.updateItem(message, empty); 

      if (message == null || empty) { 
       setGraphic(null); 
      } else { 
       lblName.setText(message.getUserName()); 
       lblContent.setText(message.getContent()); 
       setGraphic(box); 
      } 
     } 
    } 
} 
+0

UPDATE - Dies ist das Layout ich http://i.stack.imgur.com/LBsXq.jpg – Maximilian

+0

Dank verwenden wollen, löste es für mich. – Maximilian