Avatar billede 5floor Nybegynder
19. august 2004 - 13:24 Der er 9 kommentarer og
1 løsning

LineBreak i JList

Hej.
Jeg har en JList som jeg fylder med data fra en Vector.
Et af elementerne i Vectoren er en længere streng. Jeg har forgæves forsøgt at finde en måde hvorpå, jeg kan "fjerne" scroll horisontalt således, at en given tekst kommer på næste linie.
Er dette muligt, eller skal jeg traversere elementerne fra Vectoren og selv bryde dem op hvis de overskrider en hvis længde?

Mads
Avatar billede Slettet bruger
19. august 2004 - 14:01 #1
Du skal implementere din egen udgave af ListCellRenderer-interfacet, eller sørge for at dine værdier er en html-streng, altså noget i stil af "<html>her er min<br>tekst...</html>".

JavaDoc ang. ListCellRenderer-interfacet, med et eksempel:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/ListCellRenderer.html
Avatar billede _carsten Nybegynder
19. august 2004 - 16:35 #2
Jeg lavede engang et lille færdigt eksempel, måske kan det inspirere

import javax.swing.*;
import java.awt.*;
import java.util.Vector;

public class EksJList extends javax.swing.JFrame {

    public EksJList() {
        initComponents();

        Vector v = new Vector();
        v.addElement("A\tB\n\t\tC\tD");
        v.addElement("H\tI\n\t\tJ\tK");
        v.addElement("L\tM\n\t\tN\tO");
        v.addElement("T\tU\tV\tX");
        v.addElement("1\t2\t3\t4");
        v.addElement("5\t6\t7\t8");
        jList2.setCellRenderer(new MyCellRenderer());
        jList2.setListData(v);
    }

    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jList2 = new javax.swing.JList();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jScrollPane1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setPreferredSize(new java.awt.Dimension(300, 100));
        jScrollPane1.setInheritsPopupMenu(true);
        jScrollPane1.setViewportView(jList2);

        jPanel1.add(jScrollPane1);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new EksJList().show();
    }

    private javax.swing.JList jList2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
}


class MyCellRenderer extends JTextArea implements ListCellRenderer {
    public MyCellRenderer() {
    }
    public java.awt.Component getListCellRendererComponent(JList list,
                                                  Object value,
                                                  int index,
                                                  boolean isSelected,
                                                  boolean cellHasFocus){
        setText(value.toString());
        setBackground(isSelected ? Color.yellow : Color.white);
        setForeground(isSelected ? Color.black : Color.blue);
        return this;
    }
}
Avatar billede _carsten Nybegynder
24. august 2004 - 07:38 #3
Lukketid ???
Avatar billede 5floor Nybegynder
24. august 2004 - 15:44 #4
Hej Carsten.
Yes, sorry at jeg ikke lige har fået fulgt op her.
Hvis du lægger et svar så kan jeg uddele point snarest - jeg arbejder videre med begge Jeres forslag - tak

Mads
Avatar billede _carsten Nybegynder
24. august 2004 - 20:38 #5
corholio har sådan set svaret længe før jeg kastede et eksempel, så det er ok mig, at kun corholio får point her. :-)
Avatar billede 5floor Nybegynder
25. august 2004 - 10:46 #6
Super.
Tak for hjælpen Corhilio og _Carsten.
Mads
Avatar billede Slettet bruger
25. august 2004 - 11:23 #7
det var så lidt :-) Takker for point
Avatar billede _carsten Nybegynder
26. august 2004 - 10:04 #8
Det er ikke for at jeg vil være på nakken af dig, men mangler du ikke lige en sidste ting at gøre herinde ??

Accept at svar :-)
Avatar billede 5floor Nybegynder
28. august 2004 - 19:24 #9
???
Hmmm, havde ellers trykket accepter - nu skulle den vist være der ;-)
Avatar billede Slettet bruger
28. august 2004 - 19:57 #10
Det er bare iorden... no worries ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester