14. juni 2004 - 12:30Der er
10 kommentarer og 2 løsninger
Gif filer i JList
Hejsa Jeg har en JList, hvortil der er knyttet en defaultlistmodel. Jeg vil så gerne have et billede(gif) og til højre for det have tekst. Det har jeg gjort ved at bruge html: model.addElement("<html><h3><img src=\"1.gif\">Infomeddelelse: 16/6-2004 Tavlemøde aflyst denne uge</h3></html>");
Men den vist bare et fejl billede i stedet for 1.gif. Kan man slet ikke gøre det på den måde? eller er det måske nærmere fordi jeg ikke har placeret min 1.gif det rigtige sted?
Hvis der bliver vist et fejlbillede må det jo være fordi den *prøver* at vise billedet, og så må det være placeringen af gif'en (eller stien i <img src>) den er gal med... Har du prøvet med en absolut sti (f.eks. file:/sti/paa/din/harddisk.gif) ???
Har lige prøvet med: model.addElement("<html><h3><img src=\"D:/jdev903/jdev/mywork/Eksamen/SBT/Run/1.gif\">Infomeddelelse: 16/6-2004 Tavlemøde aflyst denne uge</h3></html>");
Men desværre er resultatet det samme :(
Synes godt om
Slettet bruger
14. juni 2004 - 15:29#3
Prøv at tilføje denne custom ListCellRenderer-implementation til din JList:
package presentation;
import javax.swing.*; import java.awt.*;
public class MyListRenderer extends JPanel implements ListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if (value instanceof MyImageListObject) { MyImageListObject obj = (MyImageListObject)value;
JLabel imagePnl = new JLabel(); imagePnl.setIcon(new ImageIcon(getClass().getResource(obj.getImagePath())));
Hej Corholio. Jeg har nu smidt den kode du har postet i en klasse. Derefter går jeg ud fra, at jeg skal sige: private MyListRenderer listRenderer = new MyListRenderer(); ... jList1.setCellRenderer(listRenderer);
Men hvordan propper jeg så MyImageListObject'er i JListen? MyImageListObject er jo en inner class.
Håber du kan hjælpe mig lidt videre...
Mvh Torben
Synes godt om
Slettet bruger
14. juni 2004 - 16:17#6
nej, det er bare en anonymous class, den kunne for så vidt laves public (i sin egen .java-fil).
Du laver blot instanser af MyImageListObject og tilføjer til din model, det er så simpelt.
Jeg ved ikke om jeg er helt blank, men jeg kan ikke helt få det til at fungerer når jeg siger model.addElement(new MyImageListObject("1.gif", "test test"));
Jeg får en unknown error in source. Det er en DefaultListModel, som jeg forsøger at tilføjge objektet til. Det skal det måske ikke være?
Jeg ville nok gøre det lidt anderledes, selvom idéen er den samme som corholio's Prøv nedenstående eksempel, vender sandynligvis tilbage senere på aftenen.
public Test() { String stiTilBillede = ""; // INDSÆT STI TIL BILLEDE initComponents(); DefaultListModel model = new DefaultListModel(); jList1.setCellRenderer(new MyListCellRenderer()); jList1.setModel(model); model.addElement( new MyObject("Billede 1", new javax.swing.ImageIcon( stiTilBillede ))); model.addElement( new MyObject("Billede 2", new javax.swing.ImageIcon( stiTilBillede ))); model.addElement( new MyObject("Billede 3", new javax.swing.ImageIcon( stiTilBillede )));
setSize(250,250); }
private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jList1 = new javax.swing.JList();
Det er super Carsten! Det virker jo perfekt :) Hvis du også lige smider et svar, så smider jeg lidt flere point i pujlen, så du og corholio kan dele - jeres ideer bygger jo på samme princip som du siger.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.