Avatar billede bentblod Nybegynder
07. februar 2004 - 21:27 Der er 6 kommentarer og
2 løsninger

Gui med jList

Hej er fordi når jeg sætter en Vector ind i en jList og det skal se flot ud, så er der et problem da den er ligeglad med at man bruger \t . Så er der nogen der har et forslag på hvordan man klare det??

altså jeg adder toString ind i Vectoren hvor Vector ser sådan ud:
      return accNavn + "\twins: " + wins + "\tloss: " + loss + "\tpoints: " + points;

Hvis i vil se hvordan det ser ud grafisk så: http://www.theredcarpet.dk/lasse/vsladder2/VsLadder.html
under Ladder
Avatar billede aslan Nybegynder
08. februar 2004 - 00:25 #1
Det kan ikke lade sig gøre medmindre du bruger en JTable istedet...
Avatar billede trp79 Nybegynder
08. februar 2004 - 12:06 #2
Jeg er ikke 100% sikker på dette - men så vidt jeg ved så kan man bruge html kode i diverse GUI-komponenter. Så hvis du kan lave en tabulering med html eller oprette en simpel tabel i html, så burde det vel kunne lade sig gøre?
Avatar billede trp79 Nybegynder
08. februar 2004 - 12:07 #3
Hvis du laver en html tabel er du jo i hvert fald fri for at skulle til at lære noget om JTable...
Avatar billede trp79 Nybegynder
08. februar 2004 - 12:16 #4
Du kan jo prøve med:
return "<html><h1>"+accNavn+"</h1><h2> wins: "+wins+"</h2> loss: "+ loss + "points "+ points + "</html>"
For at teste om det virker. I JTable kan man i hvert fald benytte html kode...
Avatar billede trp79 Nybegynder
08. februar 2004 - 15:49 #5
Så kom jeg til min egen pc og fik mulighed for at teste. Man kan godt bruge html tags i en JList.
Prøv engang at køre understående eks.

****ListeJPanel.java****

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

public class ListeJPanel extends JFrame {

    private JPanel listePanel;
    private JList dvdListe;
    private JScrollPane scroller;
    private String[] indhold = { "<html><table width=\"400\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr><td width=\"60%\">Navn:</td><td width=\"40%\">Torben R P</td></tr></table></html>", "<html><h1>2</h1></html>", "<html><h2>3</h2></html>", "<html><h3>3</h3></html>", "<html><h4>3</h4></html>"};
    public ListeJPanel() {

        super("Liste test");
        setSize(400,400);

        listePanel = new JPanel(new BorderLayout());
        listePanel.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
        getContentPane().add(listePanel, BorderLayout.CENTER);

        dvdListe = new JList(indhold);
        scroller = new JScrollPane(dvdListe);
        listePanel.add(scroller, BorderLayout.CENTER);

        setVisible(true);
    }
}
****ListeJPanel.java - SLUT****

****Test.java****
class Test {

    public static void main(String[] args) {

        new ListeJPanel();
    }
}
****Test - SLUT****

Jeg håber du kan bruge det - du slipper i hvert fald for at sætte dig ind i JTable på denne måde.

Mvh
Torben
Avatar billede _carsten Nybegynder
08. februar 2004 - 20:08 #6
Det kan sagtens lade sig gøre, du skal bare lave din egen ListCellRenderer som extender JTextArea


Eksempel (Hvis jeg forstår dig ret, er det sådan det skal virke)

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

public class Eks462302 extends javax.swing.JFrame {
   
    public Eks462302() {
        initComponents();

        Vector v = new Vector();
        v.addElement("A\tB\tC\tD");
        v.addElement("H\tI\tJ\tK");
        v.addElement("L\tM\tN\tO");
        v.addElement("P\tQ\tR\tS");
        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 Eks462302().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.red : Color.white);
        setForeground(isSelected ? Color.white : Color.black);
        return this;
    }
}
Avatar billede trp79 Nybegynder
10. februar 2004 - 12:11 #7
Hjælper nogle af svarene bentblod?
Avatar billede bentblod Nybegynder
10. februar 2004 - 16:11 #8
Har ikke haft tid til at kigge på dem, men kigger på det iaften :) men tak for hjælpen da :) håber det virker
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