2011-01-05 12 views
2

Ich mache einen Twitter-Client (Desktop-Anwendung) in Java, ich benutze auch twitter4j API. Ich habe geschafft, die Suche nach Tweets zu machen, und ich bekomme Ergebnisse zurück und ich zeige sie in einer Jlist. was ich will ist, dass ich Tweets schön in der Liste anzeigen möchte, nicht nur als Text .. Zeige das Bild des Benutzers, der Tweet, getwittert von ... usw. all diese Informationen .. zusätzlich zusätzliche Daten anhängen Sterne-Bewertung .. Wie kann ich das zu einer JList hinzufügen? Kann die Jlist verschiedene Objekte enthalten .. Jpanels zum Beispiel ..JLists mit einer Reihe von Objekten

Antwort

2

erstellen Ich schlage vor, Sie setzen eine Reihe von JPanels in einem JScrollPane .

+0

Hallo, ich habe versucht, das zu tun .. es fügt ein jpanel das, das ich entworfen habe .. aber wenn ich es versuchte fügen Sie mehr hinzu es wird nicht dauern .. können Sie warum wissen? ich mache .. jScrollPane2.getViewport(). add (new JPanel()); – AhmadAssaf

+0

Fügen Sie dem JScrollPane einen Bereich hinzu. Fügen Sie dann alle Ihre Panels zu diesem einen Panel hinzu. – jzd

+0

danke .. es funktioniert sehr gut .. danke – AhmadAssaf

1

Ein Renderer einer JList muss eine JComponent sein, also können Sie jedes Swing-Objekt verwenden, einschließlich JPanels.

Sie können auch HTML in einem JLabel verwenden, wenn dies einfacher ist als die Verwendung eines JPanels.

Um einen benutzerdefinierten Renderer verwenden, können Sie etwas tun ..

myList.setCellRenderer(new CustomRenderer()); 

und dann ein Renderer wie diese Statt

public class CustomRenderer extends DefaultListCellRenderer { 

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus) { 
    JPanel panel = new JPanel(); 
    // set up the panel for your exact display requirements. 
    return(panel); 
    } 
} 
+0

danke ich habe es geschafft, das zu tun .. aber jetzt, wenn ich das Jpanel hinzufügen, wenn es Tasten oder andere Komponenten hat sie nicht zugegriffen werden .. sie werden nur angezeigt – AhmadAssaf

+0

der Elemente sind jetzt in der Liste nicht zugänglich, ich kann jedes auswählen .. kann ich einige Informationen darüber haben bitte – AhmadAssaf

0

Vorschlagen mit JTable, die mehrere Spalten anstelle einer JList hat.

Verwenden Sie auch GlazedList s, wodurch es sehr einfach ist, Listen mit Feldern in einer JTable anzuzeigen, sodass sie automatisch aktualisiert werden, wenn sich die zugrunde liegende Liste ändert.

Hier ist ein Beispiel für einige Code, den ich vor kurzem, die etwas Ähnliches zeigt schrieb:

private void bindEmailTargetTable(NotificationModel newModel) { 
    JTable table = getUI(UIKey.EMAIL_TARGET_TABLE); 
    EventList<EmailTarget> displayList = newModel.getEmailTargets(); 
    TableFormat<EmailTarget> tf = new TableFormat<EmailTarget>() 
    { 
     @Override public int getColumnCount() { 
      return 4; 
     } 

     private final String[] columns = { "address", "description", "msg left", "msg limit" }; 
     @Override public String getColumnName(int col) { 
      return this.columns[col]; 
     } 

     @Override public Object getColumnValue(EmailTarget item, int col) { 
      switch (col) 
      { 
       case 0: 
        return item.getAddress(); 
       case 1: 
        return item.getDescription(); 
       case 2: 
        return item.getRemainingMessages(); 
       case 3: 
        return item.getMessageLimit(); 
       default: 
        return ""; 
      } 
     } 

    }; 
    EventTableModel<EmailTarget> etm = new EventTableModel<EmailTarget>(displayList, tf); 
    table.setModel(etm); 
} 

, dass 33 Zeilen Code ist eine JTable zu nehmen und machen es aktualisieren sich automatisch 4 Felder jedes EmailTarget in ein EventList<EmailTarget> anzuzeigen .

Für Inhalte außerhalb des Textfelds benötigen Sie nur einen benutzerdefinierten TableCellRenderer.

0

AS Jason vorgeschlagen, es ist besser, für jtable statt JLIst gehen. Tatsächlich können Sie beliebige freie Java-basierte Tabellenklassen verwenden, die erweiterte Funktionalität gegenüber JTables haben. JIDE ist eine solche Bibliothek, aber ihre kommerzielle. Sie können suchen und viel finden.

Verwandte Themen