Avatar billede trp79 Nybegynder
01. juni 2004 - 11:37 Der er 2 kommentarer og
1 løsning

Jlist - DefaultListModel

Hvis man nu har en klasse som understående, og ønsker tilknytte en DefaultListModel til JListen, hvordan gør man så? Normalt siger man jo bare Jlist list = new Jlist(defaultlistmodel), men det kan man ikke i understående, da den jo så vil brokke sig over at konstruktørene ikke er ens.

package beregnafstand;

import javax.swing.*;
import javax.swing.border.*;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class CheckBoxList extends JList
{
  protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);

  public CheckBoxList()
  {
      setCellRenderer(new CellRenderer());

      addMouseListener(new MouseAdapter()
        {
            public void mousePressed(MouseEvent e)
            {
              int index = locationToIndex(e.getPoint());

              if (index != -1) {
                  JCheckBox checkbox = (JCheckBox)
                              getModel().getElementAt(index);
                  checkbox.setSelected(
                                    !checkbox.isSelected());
                  repaint();
              }
            }
        }
      );

      setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  }

  protected class CellRenderer implements ListCellRenderer
  {
      public Component getListCellRendererComponent(
                    JList list, Object value, int index,
                    boolean isSelected, boolean cellHasFocus)
      {
        JCheckBox checkbox = (JCheckBox) value;
        checkbox.setBackground(isSelected ? getSelectionBackground() : getBackground());
        checkbox.setForeground(isSelected ? getSelectionForeground() : getForeground());
        checkbox.setEnabled(isEnabled());
        checkbox.setFont(getFont());
        checkbox.setFocusPainted(false);
        checkbox.setBorderPainted(true);
        checkbox.setBorder(isSelected ? UIManager.getBorder("List.focusCellHighlightBorder") : noFocusBorder);
        return checkbox;
      }
  }
}

Mvh
Torben Pedersen
Avatar billede mikkelbm Nybegynder
01. juni 2004 - 11:51 #1
Du kan vel bruge:

list.setModel(listmodel);

eller inde i listen:

this.setModel(new DefaultListModel());

- Hvis det var det du mente?
Avatar billede trp79 Nybegynder
01. juni 2004 - 12:03 #2
ligepræcis :)

Smid du bare et svar.

Tak for hjælpen, mvh
Torben
Avatar billede mikkelbm Nybegynder
01. juni 2004 - 12:04 #3
Det var så lidt.
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