Java Applet JTable/JList

Melwin87

Mitglied
Hallo Leute,..
Bin ganz neu in Java und such ne Möglichkeit drei Spalten mit jeweils 4 Bildern
per Drag&Drop zu sortieren und am Ende die Reihenfolge auszuwerten.

Kann mir da jemand irgendwie Anhaltspunkte geben wie ich das am Besten realisieren kann ? Dürfte ja eigentlich nicht wirklich schwer sein.

Gerade habe ich das Problem das ich einfach keine 4 JLists nebeneinander bekomme.
 

Marco13

Top Contributor
4 Lists nebeneinander ...
Code:
somePanel.setLayout(new GridLayout(1,4));
somePanel.add(list[0]);
somePanel.add(list[1]);
somePanel.add(list[2]);
somePanel.add(list[3]);
... aber wenn's daran hakt, wirst du mit Drag&Drop deinen Spaß haben ;) (Das kann ein bißchen Frickelig sein, aber es gibt zumindest viele Beispiele im Netz, die man klau^C^C^C an denen man sich orientieren kann)
 

Melwin87

Mitglied
So.. das hat schonmal funktioniert.
Ich habe jetzt eine JList Erweiterung damit ich Bilder darin anzeigen kann: (das funktioniert)
Java:
public class JListWithImages extends JList {

 public JListWithImages() {
   setCellRenderer(new CustomCellRenderer());
   }

 class CustomCellRenderer implements ListCellRenderer {
   public Component getListCellRendererComponent
    (JList list, Object value, int index,
     boolean isSelected,boolean cellHasFocus) {
     Component component = (Component)value;
     component.setBackground
      (isSelected ? Color.black : Color.white);
     component.setForeground
      (isSelected ? Color.white : Color.black);
     return component;
     }
   }
}

Das Ganze habe ich jetzt so eingebaut:
Java:
JFrame frame = new JFrame();
	    JPanel panel = new JPanel();
	    Vector vector = new Vector();

	    JPanel jp1 = new JPanel();
	    jp1.add(new JLabel(new ImageIcon("eins.gif")));
	    JPanel jp2 = new JPanel();
	    jp2.add(new JLabel(new ImageIcon("zwei.gif")));
	    JPanel jp3 = new JPanel();
	    jp3.add(new JLabel(new ImageIcon("drei.gif")));
	    JPanel jp4 = new JPanel();
	    jp4.add(new JLabel(new ImageIcon("vier.gif")));
	    
	    vector.addElement(jp1);
	    vector.addElement(jp2);
	    vector.addElement(jp3);
	    vector.addElement(jp4);
	    
	    JListWithImages jlwi = new JListWithImages();
	    jlwi.setListData(vector);
	    
	    // Drag&Drop aktivieren
	    ListTransferHandler lh = new ListTransferHandler();
        jlwi.setTransferHandler(lh);
	    jlwi.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
	    jlwi.setDragEnabled(true);
	    jlwi.setDropMode(DropMode.INSERT);


Mit diesem Transferhandler:
http://java.sun.com/docs/books/tuto...PasteProject/src/dnd/ListTransferHandler.java

bekomme ich aber wegen der Bilder folgende Fehlermeldungen:
(Wenn ich eine normale JList ohne Bilder nehme, funktioniert das wunderbar)

Java:
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-1" java.lang.ClassCastException: javax.swing.JPanel cannot be cast to java.lang.String
at ListTransferHandler.createTransferable(ListTransferHandler.java:100)

Ich hoffe jemand kann mir da weiterhelfen

Danke
 

Michael...

Top Contributor
Hab zwar noch nie was mit D&D gemacht, aber damit Objekte per D&D übergeben werden können müssen diese das Interface Transferable implementieren
--> Du musst eigene Objekte verwenden und die in die Liste stecken JLabel bzw. JPanel implementieren meines Wissen das Interface nicht.

Dann müsstest Du in der ListTransferHandler.java folgende Methode auf Deine Objekte mappen, diese funktioniert nur mit Strings:
Java:
protected Transferable createTransferable(JComponent c) {
        JList list = (JList)c;
        int index = list.getSelectedIndex();
        String value = (String)list.getSelectedValue();
        return new StringSelection(value);
    }
 

Marco13

Top Contributor
Ja, der verlinkte TransferHandler unterstützt eben nur Strings. Sich einen für JPanels selbst schreiben könnte eben wie angedeutet etwas... fummelig werden (außer wenn man weiß, wie's geht...)
 

Marco13

Top Contributor
Introduction to DnD (The Java™ Tutorials > Creating a GUI With JFC/Swing > Drag and Drop and Data Transfer) lesen, an Beispielen nachvollziehen, ausprobieren... ist mühsam...

Das hier ist jedenfalls so übel zusammengestümpert, dass ich selbst das NICHT verwenden würde. Aber ich hab' gerade nich viel Zeit, und vielleicht hast du ja keine ... (hohen? Nein: GAR keine) Ansprüche.


Code:
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

class PanelDragDrop
{
    public static void main(String args[])
    {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        DefaultListModel model = new DefaultListModel();

        JPanel jp1 = new JPanel();
        jp1.add(new JLabel(new ImageIcon("image00.png")));
        JPanel jp2 = new JPanel();
        jp2.add(new JLabel(new ImageIcon("image01.png")));
        JPanel jp3 = new JPanel();
        jp3.add(new JLabel(new ImageIcon("image02.png")));
        JPanel jp4 = new JPanel();
        jp4.add(new JLabel(new ImageIcon("image03.png")));

        model.addElement(jp1);
        model.addElement(jp2);
        model.addElement(jp3);
        model.addElement(jp4);
        JListWithImages jlwi = new JListWithImages(model);

        // Drag&Drop aktivieren
        ListTransferHandler lh = new ListTransferHandler();
        jlwi.setTransferHandler(lh);
        jlwi.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        jlwi.setDragEnabled(true);
        jlwi.setDropMode(DropMode.INSERT);


        lh = new ListTransferHandler();
        jp4 = new JPanel();
        jp4.add(new JLabel(new ImageIcon("image03.png")));
        model = new DefaultListModel();
        model.addElement(jp4);
        JListWithImages jlwi2 = new JListWithImages(model);

        jlwi2.setTransferHandler(lh);
        jlwi2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        jlwi2.setDragEnabled(true);
        jlwi2.setDropMode(DropMode.ON_OR_INSERT);


        panel.setLayout(new GridLayout(1,0));
        panel.add(jlwi);
        panel.add(jlwi2);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}

class JListWithImages extends JList {

 public JListWithImages(ListModel model)
 {
     super(model);
   setCellRenderer(new CustomCellRenderer());
   }

 class CustomCellRenderer implements ListCellRenderer {
   public Component getListCellRendererComponent
    (JList list, Object value, int index,
     boolean isSelected,boolean cellHasFocus) {
     Component component = (Component)value;
     component.setBackground
      (isSelected ? Color.black : Color.white);
     component.setForeground
      (isSelected ? Color.white : Color.black);
     return component;
     }
   }
}


class ObjectTransferable implements Transferable
{
    public static DataFlavor flavor = new DataFlavor(Object.class, "Object");
    private Object object;

    public ObjectTransferable(Object object)
    {
        this.object = object;
    }

    public Object getTransferData(DataFlavor flavor)
    {
        return object;
    }

    public DataFlavor[] getTransferDataFlavors()
    {
        return new DataFlavor[]{flavor};
    }

    public boolean isDataFlavorSupported(DataFlavor flavor)
    {
        return true;
    }
}

class ListTransferHandler extends TransferHandler {

    /**
     * Perform the actual data import.
     */
    public boolean importData(TransferHandler.TransferSupport info) {
        Object data = null;

        //If we can't handle the import, bail now.
        if (!canImport(info)) {
            return false;
        }

        JList list = null;
        DefaultListModel model = null;
        try
        {
            list = (JList)info.getComponent();
            model = (DefaultListModel)(list.getModel());
        } catch (Exception ioe) {
            ioe.printStackTrace();
            return false;
        }

        //Fetch the data -- bail if this fails
        try {
            data = info.getTransferable().getTransferData(ObjectTransferable.flavor);
        } catch (UnsupportedFlavorException ufe) {
            System.out.println("importData: unsupported data flavor");
            return false;
        } catch (IOException ioe) {
            System.out.println("importData: I/O exception");
            return false;
        } catch (Exception ioe) {
            ioe.printStackTrace();
            return false;
        }

        if (info.isDrop()) { //This is a drop
            JList.DropLocation dl = (JList.DropLocation)info.getDropLocation();
            int index = dl.getIndex();
            if (dl.isInsert()) {
                model.add(index, data);
                return true;
            } else {
                model.set(index, data);
                return true;
            }
        } else { //This is a paste
            int index = list.getSelectedIndex();
            // if there is a valid selection,
            // insert data after the selection
            if (index >= 0) {
                model.add(list.getSelectedIndex()+1, data);
            // else append to the end of the list
            } else {
                model.addElement(data);
            }
            return true;
        }
    }

    /**
     * Bundle up the data for export.
     */
    protected Transferable createTransferable(JComponent c) {
        JList list = (JList)c;
        int index = list.getSelectedIndex();
        Object value = list.getSelectedValue();
        return new ObjectTransferable(value);
    }

    /**
     * The list handles both copy and move actions.
     */
    public int getSourceActions(JComponent c) {
        return TransferHandler.COPY_OR_MOVE;
    }



    /**
     * When the export is complete, remove the old list entry if the
     * action was a move.
     */
    protected void exportDone(JComponent c, Transferable data, int action) {
        if (action != MOVE) {
            return;
        }
        JList list = (JList)c;
        DefaultListModel model = (DefaultListModel)list.getModel();
        int index = list.getSelectedIndex();
        model.remove(index);
    }

    /**
     * We only support importing strings.
     */
    public boolean canImport(TransferHandler.TransferSupport support) {
        return true;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Java-Applet Parameter übergabe? AWT, Swing, JavaFX & SWT 2
X Applet Java Applet Datei Ausführung AWT, Swing, JavaFX & SWT 9
J Applet Java-Applet friert mit Firefox ein AWT, Swing, JavaFX & SWT 8
S [JAVA] JFrame in Applet/JApplet AWT, Swing, JavaFX & SWT 14
J Java-Applet beenden AWT, Swing, JavaFX & SWT 3
T Java Applet beenden AWT, Swing, JavaFX & SWT 2
1 Verständnisprobleme bei Java Applet AWT, Swing, JavaFX & SWT 13
I JFrame-Anmerkung "Java Applet Window" entfernen AWT, Swing, JavaFX & SWT 4
B Java Applet Größe absolut fixieren AWT, Swing, JavaFX & SWT 7
Z Java Applet Fenster automatisch an Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 4
R "Statusbar" - JFrame mit 'Java Applet Window' AWT, Swing, JavaFX & SWT 18
L swing und java applet.keine Konflikt ,oder? AWT, Swing, JavaFX & SWT 3
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
Juelin Java <-> Delphi AWT, Swing, JavaFX & SWT 3
H Exceptions seit java: 1.6.0_65 Umstellung AWT, Swing, JavaFX & SWT 3
H Exception: java.lang.ClassCastException AWT, Swing, JavaFX & SWT 2
M JavaFX java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found AWT, Swing, JavaFX & SWT 5
J Java GUI Dropdown-Menü anzeigen AWT, Swing, JavaFX & SWT 5
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
W Kennt jemand Dear ImGui (und den Java-Wrapper dazu)? AWT, Swing, JavaFX & SWT 0
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
D JAVA Schieberegler AWT, Swing, JavaFX & SWT 6
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
Encera Java FX im Eclipse-Marketplace nichtmehr auffindbar AWT, Swing, JavaFX & SWT 6
_user_q Versionscode aus build.gradle in Java-Klasse ausgeben lassen AWT, Swing, JavaFX & SWT 14
M Java Dateien kopieren mit Fortschrittsbalken AWT, Swing, JavaFX & SWT 13
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
E 3D-Grafik Java Fatal error bei LWJGL AWT, Swing, JavaFX & SWT 2
Heldderschatten Java Events und Interfaces AWT, Swing, JavaFX & SWT 18
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
E Java-TexturePaint sehr langsam AWT, Swing, JavaFX & SWT 9
N Java MySQL Datenbank durchsuchen? AWT, Swing, JavaFX & SWT 7
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
imawake Java Paket-Tracking Programm 📦 AWT, Swing, JavaFX & SWT 7
izoards *.doc Seitenränder per Java setzen... AWT, Swing, JavaFX & SWT 14
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
J Spiel mit Java AWT, Swing, JavaFX & SWT 9
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
N FXMLLoader.load java.lang.RuntimeException: Gradle AWT, Swing, JavaFX & SWT 2
T Java GUI - Würfel Programm AWT, Swing, JavaFX & SWT 6
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
dtr84 JavaFX/OpenJFX mittels Apache Ivy einbinden (Java 11) AWT, Swing, JavaFX & SWT 18
M Jogl und Java 3d AWT, Swing, JavaFX & SWT 0
S0PEX JavaFX Java 8 auf 15 migrieren OpenJFX mit Gradle eingebunden, jedoch nicht gefunden !? AWT, Swing, JavaFX & SWT 4
I Gui in bestehendes Java-Programm AWT, Swing, JavaFX & SWT 11
V Java-Zeichenfeld mit AWT AWT, Swing, JavaFX & SWT 3
N java Gui friert scheinbar zufällig ein AWT, Swing, JavaFX & SWT 5
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
P Java Fx einrichten AWT, Swing, JavaFX & SWT 2
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
MiMa Java und JavaFX 13 läuft endlich AWT, Swing, JavaFX & SWT 4
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Trèfle Ausklappbare Diagramme in Java AWT, Swing, JavaFX & SWT 1
R Java, GUI, Hintergrundbild, Image, AWT, Swing, JavaFX & SWT 4
K JAVA FX Constraints AWT, Swing, JavaFX & SWT 2
F Java FX und webcam AWT, Swing, JavaFX & SWT 1
T Wie kann man in java aufwendige grafiken programmieren AWT, Swing, JavaFX & SWT 1
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
J Java SWT Tabelleninhalt formattieren AWT, Swing, JavaFX & SWT 10
Blender3D Falsche Werte mit Java Toolkit Screensize AWT, Swing, JavaFX & SWT 4
K Swing AWT-EventQueue-1 java.lang.NoClassDefFoundError bei setVisible(true) AWT, Swing, JavaFX & SWT 3
A Java Programm gestalten AWT, Swing, JavaFX & SWT 4
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
I Java Bildfarbe ändern wie bei Photoshop AWT, Swing, JavaFX & SWT 9
R JavaFX Java FXML Vererbung in Klassen AWT, Swing, JavaFX & SWT 9
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
J Parallele Aktionen in Java FX richtig durchführen. AWT, Swing, JavaFX & SWT 5
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
M JavaFX java.lang.IllegalStateException: Location is not set. AWT, Swing, JavaFX & SWT 9
L Java- CardLayout AWT, Swing, JavaFX & SWT 10
M Java zeichnet nicht pixelgenau AWT, Swing, JavaFX & SWT 40
B Swing Eclipse is running under 0, but this Java project has a 1.6 Java compliance level, so WindowBuilder AWT, Swing, JavaFX & SWT 2
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
S Java Gui AWT, Swing, JavaFX & SWT 5
R Sierpinski Dreieck mit Java FX AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben