Avatar billede trp79 Nybegynder
05. juni 2004 - 12:38 Der er 2 kommentarer og
1 løsning

JList - drag and drop (flytte elementer i en jlist)

Hejsa
Hvordan kan man i en JList tage ved et element og flytte det og eller ned i selvsamme JList?

Mvh
Torben
Avatar billede conrad Nybegynder
08. juni 2004 - 19:30 #1
Jeg har bikset et lille eksempel sammen. I version 1.4 kan du nok benytte Javas Drag and drop, men det kræver lidt mere kode (og tid:) )

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

public class MyFrame extends JFrame
{

    JPanel p1;
    JList jlist;
    String[] data = {"zero", "one", "two", "three", "four"};
    int indexStart;
    int indexEnd;
   
    public MyFrame()
    {
        super("Drag and drop test (coded)");
        setSize(300,300);
        p1 = new JPanel();
        p1.setSize(getWidth(),getHeight());//same as frame
        jlist = new JList();
        //you could probably use another JListModel implementation
        jlist.setModel(new DefaultComboBoxModel(data)); 
       
        MouseListener mouseListener = new MouseAdapter()
        {
           
            public void mousePressed(MouseEvent e)
            {
                //keep start index
                indexStart = jlist.locationToIndex(e.getPoint());
                System.out.println("Press on Item " + indexStart);
            }   
                       
            public void mouseReleased(MouseEvent e)
            {
                //keep end index
                indexEnd = jlist.locationToIndex(e.getPoint());
                String valueAtIndexStart = (String) ((DefaultComboBoxModel)jlist.getModel()).getElementAt(indexStart);
                ((DefaultComboBoxModel)jlist.getModel()).removeElementAt(indexStart);
                ((DefaultComboBoxModel)jlist.getModel()).insertElementAt(valueAtIndexStart, indexEnd);
                jlist.setSelectedIndex(indexEnd);
                System.out.println("Release on Item " + indexEnd);
            }
           
       
        };
        jlist.addMouseListener(mouseListener);

        p1.add(jlist);
        getContentPane().add(p1);
        setVisible(true);
       
    }

    public static void main(String args[])
    {
        MyFrame f = new MyFrame();   
    }

}
Avatar billede trp79 Nybegynder
09. juni 2004 - 18:16 #2
Det er helt kanon conrad :) Hvis du smider et svar, så er der point til dig.
Mange tak for hjælpen, mvh
Torben
Avatar billede conrad Nybegynder
10. juni 2004 - 08:19 #3
et svar
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