Drag and Drop

Status
Nicht offen für weitere Antworten.

Kaladial

Bekanntes Mitglied
So erstmal Code (ich weis is wieder recht viel und alles mögliche drin aber naja :) ):

Code:
public class DlgUserGrpVerwaltung extends JDialog {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel jPanelUser = null;
	private JPanel jPanelGruppe = null;
	private JPanel jPanelSouth = null;
	private JButton jButtonOk = null;
	private JLabel jLabel = null;
	private JButton jButtonAbbruch = null;
	private JLabel jLabelUser = null;
	private JLabel jLabelGruppe = null;

	/**
	 * @param owner
	 */
	public DlgUserGrpVerwaltung(Frame owner) {
		super(owner);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setBounds(new Rectangle(0, 0, 500, 400));
		this.setContentPane(getJContentPane());
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabelUser = new JLabel();
			jLabelUser.setBounds(new Rectangle(15, 15, 225, 25));
			jLabelUser.setText("User:");
			jLabelUser.setHorizontalAlignment(JLabel.CENTER);
			jLabelGruppe = new JLabel();
			jLabelGruppe.setBounds(new Rectangle(250, 15, 225, 25));
			jLabelGruppe.setText("Gruppen:");
			jLabelGruppe.setHorizontalAlignment(JLabel.CENTER);
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJPanelUser(), null);
			jContentPane.add(getJPanelGruppe(), null);
			jContentPane.add(getJPanelSouth(), null);
			jContentPane.add(jLabelUser, null);
			jContentPane.add(jLabelGruppe, null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jPanelUser	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelUser() {
		if (jPanelUser == null) {
			jPanelUser = new JPanel();
			jPanelUser.setLayout(new GridLayout(1,1));
			jPanelUser.setBounds(new Rectangle(15, 55, 225, 260));
			jPanelUser.add(createListUser("User")); 

		}
		return jPanelUser;
	}

	/**
	 * This method initializes jPanelGruppe	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelGruppe() {
		if (jPanelGruppe == null) {
			jPanelGruppe = new JPanel();
			jPanelGruppe.setLayout(new GridLayout(1,1));
			jPanelGruppe.setBounds(new Rectangle(250, 55, 225, 260));
			jPanelGruppe.add(createListGruppe("Gruppe")); 
		}
		return jPanelGruppe;
	}

	/**
	 * This method initializes jPanelSouth	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelSouth() {
		if (jPanelSouth == null) {
			jLabel = new JLabel();
			jLabel.setText("");
			jLabel.setPreferredSize(new Dimension(40, 0));
			jPanelSouth = new JPanel();
			jPanelSouth.setLayout(new FlowLayout());
			jPanelSouth.setBounds(new Rectangle(0, 333, 493, 40));
			jPanelSouth.add(getJButtonOk(), null);
			jPanelSouth.add(jLabel, null);
			jPanelSouth.add(getJButtonAbbruch(), null);
		}
		return jPanelSouth;
	}

	/**
	 * This method initializes jButtonOk	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonOk() {
		if (jButtonOk == null) {
			jButtonOk = new JButton();
			jButtonOk.setText("OK");
			jButtonOk.setPreferredSize(new Dimension(100, 30));
			jButtonOk.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jButtonOk;
	}

	/**
	 * This method initializes jButtonAbbruch	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonAbbruch() {
		if (jButtonAbbruch == null) {
			jButtonAbbruch = new JButton();
			jButtonAbbruch.setPreferredSize(new Dimension(100, 30));
			jButtonAbbruch.setText("Abbruch");
			jButtonAbbruch.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					dispose();
				}
			});
		}
		return jButtonAbbruch;
	}

    private JPanel createListUser(String listId) { 
        DefaultListModel model = new DefaultListModel();
        String erg[]=DB.getUser();
        for(int i=0; i<erg.length; i++){
        	if(erg[i]==null){
        		break;
        	}
        	String erg_split[]=GlobaleFunction.split(erg[i], ": ");
        	model.addElement(erg_split[1]); 
        }
        JList list = new JList(model);
        list.setName(listId);
        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
        JScrollPane scrollPane = new JScrollPane(list); 
        scrollPane.setPreferredSize(new Dimension(225, 250)); 
        list.setDragEnabled(true); 
        list.setTransferHandler(new ListTransferHandler()); 
        JPanel panel = new JPanel(); 
        panel.add(scrollPane); 
        return panel; 
    } 

    private JPanel createListGruppe(String listId) { 
        DefaultListModel model = new DefaultListModel(); 

        String erg[]=DB.getGrps();
        for(int i=0; i<erg.length; i++){
        	if(erg[i]==null){
        		break;
        	}
        	String erg_split[]=GlobaleFunction.split(erg[i], ": ");
        	if(erg_split[1].compareToIgnoreCase("keine")!=0){
        		model.addElement(erg_split[1]); 
        	}
        }

        JList list = new JList(model);
        list.setName(listId);
        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
        JScrollPane scrollPane = new JScrollPane(list); 
        scrollPane.setPreferredSize(new Dimension(225, 250)); 
        list.setDragEnabled(true); 
        list.setTransferHandler(new ListTransferHandler()); 
        JPanel panel = new JPanel(); 
        panel.add(scrollPane); 
        return panel; 
    } 

    abstract class StringTransferHandler extends TransferHandler { 
        protected abstract String exportString(JComponent c); 
        protected abstract void importString(JComponent c, String str); 
        protected abstract void cleanup(JComponent c, boolean remove); 
        protected Transferable createTransferable(JComponent c) { 
            return new StringSelection(exportString(c)); 
        } 
        public int getSourceActions(JComponent c) { 
            return COPY_OR_MOVE; 
        } 
        public boolean importData(JComponent c, Transferable t) { 
        	JList source = (JList)c;
        	if(source.getName().compareToIgnoreCase("Gruppe")==0){
        	
	            if (canImport(c, t.getTransferDataFlavors())) { 
	                try { 
	                    String str = (String)t.getTransferData(DataFlavor.stringFlavor); 
	                    importString(c, str); 
	                    return true; 
	                } catch (UnsupportedFlavorException ufe) { 
	                } catch (IOException ioe) { 
	                } 
	            }
        	}else{
        		return true; 
        	}
            return false; 
        } 
        protected void exportDone(JComponent c, Transferable data, int action) {
        	JList source = (JList)c;
        	if(source.getName().compareToIgnoreCase("Gruppe")==0){
        		cleanup(c, action == MOVE);
        	}
        } 
        public boolean canImport(JComponent c, DataFlavor[] flavors) { 
            for (int ndx = 0; ndx < flavors.length; ndx++) { 
                if (DataFlavor.stringFlavor.equals(flavors[ndx])) { 
                    return true; 
                } 
            } 
            return false; 
        } 
    } 
    class ListTransferHandler extends StringTransferHandler { 
        public JList target; 
        public int[] rows = null; 
        public int addIndex = -1; //Position an der die Zeilen eingefügt werden 
        public int addCount = 0;  //Anzahl der eingefügten Zeilen. 
        protected String exportString(JComponent c) { 
            JList list = (JList)c; 
            rows = list.getSelectedIndices(); 
            StringBuffer buff = new StringBuffer(); 
            for (int ndx = 0; ndx < rows.length; ndx++) { 
                Object val = ((DefaultListModel)list.getModel()).getElementAt(rows[ndx]); 
                buff.append(val == null ? "" : val.toString()); 
                if (ndx != rows.length - 1) { 
                    buff.append("\n"); 
                } 
            } 
            return buff.toString(); 
        } 
        protected void importString(JComponent c, String str) { 
            target = (JList)c; 
            DefaultListModel model = (DefaultListModel)target.getModel(); 
            int index = target.getSelectedIndex(); 
            //Der Benutzer wird daran gehindert die Daten auf sich selbst fallen zu lassen. 
            //Zum Beispiel, wenn der Benutzer die Zeilen #4,#5,#6 und #7 verschiebt und 
            //versucht sie unterhalb der Zeile #5 einzufügen, wäre es 
            //problematisch die ursprünglichen Zeilen zu entfernen. 
            //Daher wird dies nicht erlaubt. 
            if (rows != null && index >= rows[0] - 1 && 
                    index <= rows[rows.length - 1]) { 
                rows = null; 
                return; 
            } 
            int max = model.getSize(); 
            if (index < 0) { 
                index = max; 
            } else { 
                index++; 
                if (index > max) { 
                    index = max; 
                } 
            } 
            addIndex = index; 
            String[] values = str.split("\n"); 
            addCount = values.length; 
            for (int ndx = 0; ndx < values.length ; ndx++) { 
                model.insertElementAt( values[ndx], index++); 
            } 
            //Wenn wir Zeilen innerhalb derselben Liste verschieben, müssen 
            //wir die Zeilen entsprechend anpassen, da diejenigen 
            //hinter dem Einfügungspunkt verschoben werden. 
            if (rows!= null && addCount > 0) { 
                for (int ndx = 0; ndx < rows.length; ndx++) { 
                    if (rows[ndx] > addIndex) { 
                        rows[ndx] += addCount; 
                    } 
                } 
            } 
        } 
        protected void cleanup(JComponent c, boolean remove) { 
            JList source = (JList)c; 
            if (remove && rows != null) { 
                DefaultListModel model = 
                        (DefaultListModel)source.getModel(); 
                for (int ndx = rows.length - 1; ndx >= 0; ndx--) { 
                    model.removeElementAt(rows[ndx]); 
                } 
            } 
            rows = null; 
            addCount = 0; 
            addIndex = -1; 
        } 
    } 	
}

ich habe den code von hier(http://www.java-forum.org/de/viewtopic.php?p=208138#208138) genommen und ein klein wenig angepasst...

- also zum einen hol ich mir meine daten aus der datenbank
- zum anderen lösche ich aus dem user-panel keine daten und trag auch keine ein...

also jetzt zu meinem problem:

ich möchte das die daten die ich am anfang in die liste gruppe eintrage nie gelöscht werden verschiebbar sind und am besten gar nicht markierbar und noch schöner wäre nicht markierbar und ne andere frabe haben...

die user sollen aber normal rein und rausgezogen werden können (aber viellicht nicht doppelt in einer gruppe (also z.b. grp a: da hab ich user b rein gezogen nun soll es so sein das ich in grp a keinen user b mehr rein ziehn darf)

Falsch:

Grp A
User B
User B

Richtig:
Grp A
User B
Grp B
Userb

mfg Kala
 

Marco13

Top Contributor
Es ist recht viel, aber trotzdem noch zu wenig, und es ist alles mögliche drin, aber etwas fehlt noch: Eine main, und ein paar Dummy-Daten, dann wäre es ein Kleines, selbstständiges, kompilierbares Beispiel....
 

Kaladial

Bekanntes Mitglied
hi

jo is richtig
is halt wieder eins von meinen dialog fenstern...

ok ich post nochmal den code diesesmal mit aufrufender datei damit ihr es auch ausprobieren könnt:

Aufrufende Datei (DlgTestUserVerwaltung.java):
Code:
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;

public class DlgTestUserVerwaltung extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JButton jButtonStart = null;

	/**
	 * This method initializes jButtonStart	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonStart() {
		if (jButtonStart == null) {
			jButtonStart = new JButton();
			jButtonStart.setText("Start");
			jButtonStart.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					user_grp_verwaltung("User-Verwaltung");
				}
			});
		}
		return jButtonStart;
	}
	private void user_grp_verwaltung(String aktion){
		DlgUserGrpVerwaltung dlg = new DlgUserGrpVerwaltung(this); 
    	dlg.setTitle(aktion);
    	dlg.setModal(true);
    	dlg.setVisible(true);
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				DlgTestUserVerwaltung thisClass = new DlgTestUserVerwaltung();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public DlgTestUserVerwaltung() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJButtonStart(), BorderLayout.CENTER);
		}
		return jContentPane;
	}

}

Und halt die Datei mit Standart-Daten (DlgUserGrpVerwaltung.java):
Code:
import javax.swing.JPanel;
import java.awt.Frame;
import javax.swing.JDialog;

import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.FlowLayout;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.TransferHandler;

import java.awt.Dimension;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import java.awt.Color;

public class DlgUserGrpVerwaltung extends JDialog {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel jPanelUser = null;
	private JPanel jPanelGruppe = null;
	private JPanel jPanelSouth = null;
	private JButton jButtonOk = null;
	private JLabel jLabel = null;
	private JButton jButtonAbbruch = null;
	private JLabel jLabelUser = null;
	private JLabel jLabelGruppe = null;

	/**
	 * @param owner
	 */
	public DlgUserGrpVerwaltung(Frame owner) {
		super(owner);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setBounds(new Rectangle(0, 0, 500, 400));
		this.setContentPane(getJContentPane());
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabelUser = new JLabel();
			jLabelUser.setBounds(new Rectangle(15, 15, 225, 25));
			jLabelUser.setText("User:");
			jLabelUser.setHorizontalAlignment(JLabel.CENTER);
			jLabelGruppe = new JLabel();
			jLabelGruppe.setBounds(new Rectangle(250, 15, 225, 25));
			jLabelGruppe.setText("Gruppen:");
			jLabelGruppe.setHorizontalAlignment(JLabel.CENTER);
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJPanelUser(), null);
			jContentPane.add(getJPanelGruppe(), null);
			jContentPane.add(getJPanelSouth(), null);
			jContentPane.add(jLabelUser, null);
			jContentPane.add(jLabelGruppe, null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jPanelUser	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelUser() {
		if (jPanelUser == null) {
			jPanelUser = new JPanel();
			jPanelUser.setLayout(new GridLayout(1,1));
			jPanelUser.setBounds(new Rectangle(15, 55, 225, 260));
			jPanelUser.add(createListUser("User")); 

		}
		return jPanelUser;
	}

	/**
	 * This method initializes jPanelGruppe	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelGruppe() {
		if (jPanelGruppe == null) {
			jPanelGruppe = new JPanel();
			jPanelGruppe.setLayout(new GridLayout(1,1));
			jPanelGruppe.setBounds(new Rectangle(250, 55, 225, 260));
			jPanelGruppe.add(createListGruppe("Gruppe")); 
		}
		return jPanelGruppe;
	}

	/**
	 * This method initializes jPanelSouth	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelSouth() {
		if (jPanelSouth == null) {
			jLabel = new JLabel();
			jLabel.setText("");
			jLabel.setPreferredSize(new Dimension(40, 0));
			jPanelSouth = new JPanel();
			jPanelSouth.setLayout(new FlowLayout());
			jPanelSouth.setBounds(new Rectangle(0, 333, 493, 40));
			jPanelSouth.add(getJButtonOk(), null);
			jPanelSouth.add(jLabel, null);
			jPanelSouth.add(getJButtonAbbruch(), null);
		}
		return jPanelSouth;
	}

	/**
	 * This method initializes jButtonOk	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonOk() {
		if (jButtonOk == null) {
			jButtonOk = new JButton();
			jButtonOk.setText("OK");
			jButtonOk.setPreferredSize(new Dimension(100, 30));
			jButtonOk.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jButtonOk;
	}

	/**
	 * This method initializes jButtonAbbruch	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonAbbruch() {
		if (jButtonAbbruch == null) {
			jButtonAbbruch = new JButton();
			jButtonAbbruch.setPreferredSize(new Dimension(100, 30));
			jButtonAbbruch.setText("Abbruch");
			jButtonAbbruch.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					dispose();
				}
			});
		}
		return jButtonAbbruch;
	}

    private JPanel createListUser(String listId) { 
        DefaultListModel model = new DefaultListModel();
        String erg[]={"test","test2","test3"};
        for(int i=0; i<erg.length; i++){
        	if(erg[i]==null){
        		break;
        	}
        	model.addElement(erg[i]); 
        }
        JList list = new JList(model);
        list.setName(listId);
        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
        list.setDragEnabled(true); 
        list.setTransferHandler(new ListTransferHandler());

        JScrollPane scrollPane = new JScrollPane(list); 
        scrollPane.setPreferredSize(new Dimension(225, 250)); 
        
        JPanel panel = new JPanel(); 
        panel.add(scrollPane); 
        return panel; 
    } 
    
    private JPanel createListGruppe(String listId) { 
        DefaultListModel model = new DefaultListModel(); 
        String erg[]={"3test","2test","1test"};
        for(int i=0; i<erg.length; i++){
        	if(erg[i]==null){
        		break;
        	}
        	model.addElement(erg[i]); 
        }

        JList list = new JList(model);
        list.setName(listId);
        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
        list.setDragEnabled(true); 
        list.setTransferHandler(new ListTransferHandler()); 
        
        JScrollPane scrollPane = new JScrollPane(list); 
        scrollPane.setPreferredSize(new Dimension(225, 250)); 
        
        JPanel panel = new JPanel(); 
        panel.add(scrollPane); 
        return panel; 
    } 

    abstract class StringTransferHandler extends TransferHandler { 
        protected abstract String exportString(JComponent c); 
        protected abstract void importString(JComponent c, String str); 
        protected abstract void cleanup(JComponent c, boolean remove); 
        protected Transferable createTransferable(JComponent c) { 
            return new StringSelection(exportString(c)); 
        } 
        public int getSourceActions(JComponent c) { 
            return COPY_OR_MOVE; 
        } 
        public boolean importData(JComponent c, Transferable t) { 
        	JList source = (JList)c;
        	if(source.getName().compareToIgnoreCase("Gruppe")==0){
        	
	            if (canImport(c, t.getTransferDataFlavors())) { 
	                try { 
	                    String str = (String)t.getTransferData(DataFlavor.stringFlavor); 
	                    importString(c, str); 
	                    return true; 
	                } catch (UnsupportedFlavorException ufe) { 
	                } catch (IOException ioe) { 
	                } 
	            }
        	}else{
        		return true; 
        	}
            return false; 
        } 
        protected void exportDone(JComponent c, Transferable data, int action) {
        	JList source = (JList)c;
        	if(source.getName().compareToIgnoreCase("Gruppe")==0){
        		cleanup(c, action == MOVE);
        	}
        } 
        public boolean canImport(JComponent c, DataFlavor[] flavors) { 
            for (int ndx = 0; ndx < flavors.length; ndx++) { 
                if (DataFlavor.stringFlavor.equals(flavors[ndx])) { 
                    return true; 
                } 
            } 
            return false; 
        } 
    } 
    class ListTransferHandler extends StringTransferHandler { 
        public JList target; 
        public int[] rows = null; 
        public int addIndex = -1; //Position an der die Zeilen eingefügt werden 
        public int addCount = 0;  //Anzahl der eingefügten Zeilen. 
        protected String exportString(JComponent c) { 
            JList list = (JList)c; 
            rows = list.getSelectedIndices(); 
            StringBuffer buff = new StringBuffer(); 
            for (int ndx = 0; ndx < rows.length; ndx++) { 
                Object val = ((DefaultListModel)list.getModel()).getElementAt(rows[ndx]); 
                buff.append(val == null ? "" : val.toString()); 
                if (ndx != rows.length - 1) { 
                    buff.append("\n"); 
                } 
            } 
            return buff.toString(); 
        } 
        protected void importString(JComponent c, String str) { 
            target = (JList)c; 
            DefaultListModel model = (DefaultListModel)target.getModel(); 
            int index = target.getSelectedIndex(); 
            //Der Benutzer wird daran gehindert die Daten auf sich selbst fallen zu lassen. 
            //Zum Beispiel, wenn der Benutzer die Zeilen #4,#5,#6 und #7 verschiebt und 
            //versucht sie unterhalb der Zeile #5 einzufügen, wäre es 
            //problematisch die ursprünglichen Zeilen zu entfernen. 
            //Daher wird dies nicht erlaubt. 
            if (rows != null && index >= rows[0] - 1 && 
                    index <= rows[rows.length - 1]) { 
                rows = null; 
                return; 
            } 
            int max = model.getSize(); 
            if (index < 0) { 
                index = max; 
            } else { 
                index++; 
                if (index > max) { 
                    index = max; 
                } 
            } 
            addIndex = index; 
            String[] values = str.split("\n"); 
            addCount = values.length; 
            for (int ndx = 0; ndx < values.length ; ndx++) { 
                model.insertElementAt( values[ndx], index++); 
            } 
            //Wenn wir Zeilen innerhalb derselben Liste verschieben, müssen 
            //wir die Zeilen entsprechend anpassen, da diejenigen 
            //hinter dem Einfügungspunkt verschoben werden. 
            if (rows!= null && addCount > 0) { 
                for (int ndx = 0; ndx < rows.length; ndx++) { 
                    if (rows[ndx] > addIndex) { 
                        rows[ndx] += addCount; 
                    } 
                } 
            } 
        } 
        protected void cleanup(JComponent c, boolean remove) { 
            JList source = (JList)c; 
            if (remove && rows != null) { 
                DefaultListModel model = 
                        (DefaultListModel)source.getModel(); 
                for (int ndx = rows.length - 1; ndx >= 0; ndx--) { 
                    model.removeElementAt(rows[ndx]); 
                } 
            } 
            rows = null; 
            addCount = 0; 
            addIndex = -1; 
        } 
    } 	
}
 

Kaladial

Bekanntes Mitglied
habs inzwischen gelöst... hab nen boxlayout benutzt und die gruppen als titel anzeigen lassen geht wunderbar
 

André Uhres

Top Contributor
Kaladial hat gesagt.:
habs inzwischen gelöst... hab nen boxlayout benutzt und die gruppen als titel anzeigen lassen geht wunderbar
Könntest ja die Lösung zum Nutzen aller auch posten :wink:

Hier ist meine Lösung:

Um die Gruppen der Gruppenliste von den Usern unterscheiden zu können,
ist es imho am besten, die Gruppen in eine eigene Wrapperklasse unterzubringen,
die im folgenden Code "GroupItem" genannt wurde.

Die Einführung dieser Klasse bedingt aber auch ein Umbauen des Transferhandlers und
die Einführung eines DropTarget (Klasse "GroupDropTarget")
und eines Transferable (Klasse "GenericTransferable").

Zusätzlich benötigen wir einen ListCellRenderer für das Einfärben der Gruppen
(Klasse "GroupCellRenderer").
http://www.java-forum.org/de/userfiles/user3690/DlgUserGrpVerwaltung.java

EDIT: da ist noch ein Problem beim Verschieben innerhalb einer Gruppe. Ich schau danach :wink:
EDIT: OK, ist gelöst (Methode "inSameGroup").
EDIT: da ist noch ein Problem beim Verschieben vopn Gruppe zu Gruppe,
wenn in der Zielgruppe schon die gleichen User sind.
EDIT: OK, ist gelöst ("addCount" hatte nicht die tatsächlich eingefügten Zeilen gezählt)
 

Kaladial

Bekanntes Mitglied
also hier mal meine lösung:

an der aufrufenden klasse hat sich nix verändert...

Code:
package AVS3;

import javax.swing.JPanel;
import java.awt.Frame;
import javax.swing.JDialog;

import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.FlowLayout;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.TransferHandler;
import javax.swing.border.TitledBorder;

import java.awt.Dimension;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import java.awt.Color;

public class DlgUserGrpVerwaltung extends JDialog {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel jPanelUser = null;
	private JPanel jPanelGruppe = null;
	private JPanel jPanelSouth = null;
	private JButton jButtonOk = null;
	private JLabel jLabel = null;
	private JButton jButtonAbbruch = null;
	private JLabel jLabelUser = null;
	private JLabel jLabelGruppe = null;

	/**
	 * @param owner
	 */
	public DlgUserGrpVerwaltung(Frame owner) {
		super(owner);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setBounds(new Rectangle(0, 0, 500, 400));
		this.setContentPane(getJContentPane());
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabelUser = new JLabel();
			jLabelUser.setBounds(new Rectangle(15, 15, 225, 25));
			jLabelUser.setText("User:");
			jLabelUser.setHorizontalAlignment(JLabel.CENTER);
			jLabelGruppe = new JLabel();
			jLabelGruppe.setBounds(new Rectangle(250, 15, 225, 25));
			jLabelGruppe.setText("Gruppen:");
			jLabelGruppe.setHorizontalAlignment(JLabel.CENTER);
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJPanelUser(), null);
			jContentPane.add(getJPanelGruppe(), null);
			jContentPane.add(getJPanelSouth(), null);
			jContentPane.add(jLabelUser, null);
			jContentPane.add(jLabelGruppe, null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jPanelUser	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelUser() {
		if (jPanelUser == null) {
			jPanelUser = new JPanel();
			jPanelUser.setLayout(new GridLayout(1,1));
			jPanelUser.setBounds(new Rectangle(15, 55, 225, 250));
            JScrollPane scrollPane = new JScrollPane(createListUser("User")); 
            scrollPane.setPreferredSize(new Dimension(225, 250)); 
            jPanelUser.add(scrollPane); 


		}
		return jPanelUser;
	}

	/**
	 * This method initializes jPanelGruppe	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelGruppe() {
		if (jPanelGruppe == null) {
			jPanelGruppe = new JPanel();
			jPanelGruppe.setLayout(new GridLayout(1,1));
			jPanelGruppe.setBounds(new Rectangle(250, 55, 225, 250));
            JScrollPane scrollPane = new JScrollPane(createListGruppe("Gruppe")); 
            scrollPane.setPreferredSize(new Dimension(225, 250)); 
            jPanelGruppe.add(scrollPane); 
		}
		return jPanelGruppe;
	}

	/**
	 * This method initializes jPanelSouth	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanelSouth() {
		if (jPanelSouth == null) {
			jLabel = new JLabel();
			jLabel.setText("");
			jLabel.setPreferredSize(new Dimension(40, 0));
			jPanelSouth = new JPanel();
			jPanelSouth.setLayout(new FlowLayout());
			jPanelSouth.setBounds(new Rectangle(0, 333, 493, 40));
			jPanelSouth.add(getJButtonOk(), null);
			jPanelSouth.add(jLabel, null);
			jPanelSouth.add(getJButtonAbbruch(), null);
		}
		return jPanelSouth;
	}

	/**
	 * This method initializes jButtonOk	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonOk() {
		if (jButtonOk == null) {
			jButtonOk = new JButton();
			jButtonOk.setText("OK");
			jButtonOk.setPreferredSize(new Dimension(100, 30));
			jButtonOk.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jButtonOk;
	}

	/**
	 * This method initializes jButtonAbbruch	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonAbbruch() {
		if (jButtonAbbruch == null) {
			jButtonAbbruch = new JButton();
			jButtonAbbruch.setPreferredSize(new Dimension(100, 30));
			jButtonAbbruch.setText("Abbruch");
			jButtonAbbruch.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					dispose();
				}
			});
		}
		return jButtonAbbruch;
	}

    private JPanel createListUser(String listId) { 
        JPanel panel = new JPanel(); 
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        DefaultListModel model = new DefaultListModel();
        String erg[]=DB.getUser();
        for(int i=0; i<erg.length; i++){
        	if(erg[i]==null){
        		break;
        	}
        	String erg_split[]=GlobaleFunction.split(erg[i], ": ");
        	model.addElement(erg_split[1]); 
        }

        JList list = new JList(model);
        list.setName(listId);
        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
        list.setDragEnabled(true); 
        list.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.white, 5), "", TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51)));
        list.setTransferHandler(new ListTransferHandler());

        JScrollPane scrollPane = new JScrollPane(list); 
        scrollPane.setPreferredSize(new Dimension(200, 225)); 
        
        panel.add(scrollPane); 
        return panel; 
    } 
    
    private JPanel createListGruppe(String listId) { 
    	JPanel panel = new JPanel();
    	panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        String erg[]=DB.getGrps();
        for(int i=0; i<erg.length; i++){
        	if(erg[i]==null){
        		break;
        	}
        	String erg_split[]=GlobaleFunction.split(erg[i], ": ");
        	if(erg_split[1].compareToIgnoreCase("keine")!=0){

	        	DefaultListModel model = new DefaultListModel(); 
	            JList list = new JList(model);
	            list.setName(listId);
	            list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
	            list.setDragEnabled(true); 
	            list.setTransferHandler(new ListTransferHandler()); 
	            list.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.white, 5), erg_split[1], TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51)));
	            
	            JScrollPane scrollPane = new JScrollPane(list); 
	            scrollPane.setPreferredSize(new Dimension(200, 82)); 
	            
	            panel.add(scrollPane);
        	}
        }
        return panel; 
    } 

    abstract class StringTransferHandler extends TransferHandler { 
        protected abstract String exportString(JComponent c); 
        protected abstract void importString(JComponent c, String str); 
        protected abstract void cleanup(JComponent c, boolean remove); 
        protected Transferable createTransferable(JComponent c) { 
            return new StringSelection(exportString(c)); 
        } 
        public int getSourceActions(JComponent c) { 
            return COPY_OR_MOVE; 
        } 
        public boolean importData(JComponent c, Transferable t) { 
        	JList source = (JList)c;
        	int schon_vorhanden=0;
        	if(source.getName().compareToIgnoreCase("Gruppe")==0){
        		
                DefaultListModel model = (DefaultListModel)source.getModel();
                int max = model.getSize();
                 
                for(int i=0; i<max; i++){
                	String list_element=((DefaultListModel)source.getModel()).getElementAt(i).toString();
                	try {
	                	String str = (String)t.getTransferData(DataFlavor.stringFlavor);
	                	if(list_element.compareToIgnoreCase(str)==0){
	                		schon_vorhanden=1;
	                		break;
	                	}
                	} catch (UnsupportedFlavorException ufe) { 
	                } catch (IOException ioe) {} 
                }
                if(schon_vorhanden==0){
		            if (canImport(c, t.getTransferDataFlavors())) { 
		                try { 
		                    String str = (String)t.getTransferData(DataFlavor.stringFlavor); 
		                    importString(c, str); 
		                    return true; 
		                } catch (UnsupportedFlavorException ufe) { 
		                } catch (IOException ioe) { 
		                } 
		            }
                }
        	}else{
        		return true; 
        	}
            return false; 
        } 
        protected void exportDone(JComponent c, Transferable data, int action) {
        	JList source = (JList)c;
        	if(source.getName().compareToIgnoreCase("Gruppe")==0){
        		cleanup(c, action == MOVE);
        	}
        } 
        public boolean canImport(JComponent c, DataFlavor[] flavors) { 
            for (int ndx = 0; ndx < flavors.length; ndx++) { 
                if (DataFlavor.stringFlavor.equals(flavors[ndx])) { 
                    return true; 
                } 
            } 
            return false; 
        } 
    } 
    class ListTransferHandler extends StringTransferHandler { 
        public JList target; 
        public int[] rows = null; 
        public int addIndex = -1; //Position an der die Zeilen eingefügt werden 
        public int addCount = 0;  //Anzahl der eingefügten Zeilen. 
        protected String exportString(JComponent c) { 
            JList list = (JList)c; 
            rows = list.getSelectedIndices(); 
            StringBuffer buff = new StringBuffer(); 
            for (int ndx = 0; ndx < rows.length; ndx++) { 
                Object val = ((DefaultListModel)list.getModel()).getElementAt(rows[ndx]); 
                buff.append(val == null ? "" : val.toString()); 
                if (ndx != rows.length - 1) { 
                    buff.append("\n"); 
                } 
            } 
            return buff.toString(); 
        } 
        protected void importString(JComponent c, String str) { 
            target = (JList)c; 
            DefaultListModel model = (DefaultListModel)target.getModel(); 
            int index = target.getSelectedIndex(); 
            //Der Benutzer wird daran gehindert die Daten auf sich selbst fallen zu lassen. 
            //Zum Beispiel, wenn der Benutzer die Zeilen #4,#5,#6 und #7 verschiebt und 
            //versucht sie unterhalb der Zeile #5 einzufügen, wäre es 
            //problematisch die ursprünglichen Zeilen zu entfernen. 
            //Daher wird dies nicht erlaubt. 
            if (rows != null && index >= rows[0] - 1 && 
                    index <= rows[rows.length - 1]) { 
                rows = null; 
                return; 
            } 
            int max = model.getSize(); 
            if (index < 0) { 
                index = max; 
            } else { 
                index++; 
                if (index > max) { 
                    index = max; 
                } 
            } 
            addIndex = index; 
            String[] values = str.split("\n"); 
            addCount = values.length; 
            for (int ndx = 0; ndx < values.length ; ndx++) { 
                model.insertElementAt( values[ndx], index++); 
            } 
            //Wenn wir Zeilen innerhalb derselben Liste verschieben, müssen 
            //wir die Zeilen entsprechend anpassen, da diejenigen 
            //hinter dem Einfügungspunkt verschoben werden. 
            if (rows!= null && addCount > 0) { 
                for (int ndx = 0; ndx < rows.length; ndx++) { 
                    if (rows[ndx] > addIndex) { 
                        rows[ndx] += addCount; 
                    } 
                } 
            } 
        } 
        protected void cleanup(JComponent c, boolean remove) { 
            JList source = (JList)c; 
            if (remove && rows != null) { 
                DefaultListModel model = 
                        (DefaultListModel)source.getModel(); 
                for (int ndx = rows.length - 1; ndx >= 0; ndx--) { 
                    model.removeElementAt(rows[ndx]); 
                } 
            } 
            rows = null; 
            addCount = 0; 
            addIndex = -1; 
        } 
    } 	
}
 

André Uhres

Top Contributor
Die Idee ist nicht schlecht. Hat aber noch einen Bug:
Verschieb mal die drei User von der linken Liste in die erste Gruppe.
Dann verschieb die drei User von der linken Liste in die zweite Gruppe.
Dann verschieb die drei User der zweiten Gruppe nach der ersten Gruppe: in der ersten Gruppe ist dann alles doppelt!

Ein Unterschied zu meiner Lösung ist, daß bei mir bei den Gruppen nur ein Scrollbalken erscheinen kann,
während es bei dir mehrere sein können.
 

Kaladial

Bekanntes Mitglied
thx für den hinweis... das muss ich dann gleich mal beheben ...

das mit den vielen scrollbalken hab ich mir auch schon überlegt ... werd mal versuchen die einzelnen boxen an die anzahl der elemente anzupassen... ma gucken ob ich das hinbekomm
 

Kaladial

Bekanntes Mitglied
hmmm...

ich steh grad etwas auf dem schlauch...
ich will die listen in den boxlayouts nach namen sortieren...

aber ich weis ehrlich net wie ich anfangen soll...

andre kannst mir da viellicht helfen?
 

André Uhres

Top Contributor
Kaladial hat gesagt.:
..ich will die listen in den boxlayouts nach namen sortieren..
Mit Drag&Drop dürfte das ja kein Problem sein, nicht wahr?
Oder willst du's automatisch sortieren?

Kaladial hat gesagt.:
..das mit den vielen scrollbalken hab ich mir auch schon überlegt ...
werd mal versuchen die einzelnen boxen an die anzahl der elemente anzupassen..
Oder einfach meine Lösung nehmen :D
 

Kaladial

Bekanntes Mitglied
ich will das sobald ich nen neues element reinzieh das an der richtigen pos eingefügt wird bzw eingefürgt wird und dann sortiert wird,
also wenn ich da z.b.:

test1
test3
test5
und dann
test2
soll das zwischen test1 und test3 eingefügt werden
 

André Uhres

Top Contributor
Kaladial hat gesagt.:
ich will das sobald ich nen neues element reinzieh das an der richtigen pos eingefügt wird bzw eingefürgt wird und dann sortiert wird,
also wenn ich da z.b.:

test1
test3
test5
und dann
test2
soll das zwischen test1 und test3 eingefügt werden
Wenn du's auf test1 fallen lässt, müsste es genau dahin kommen :wink:
Ansonsten kann man es ja danach noch mit der Maus verschieben.
 

Kaladial

Bekanntes Mitglied
ah und gleich noch was: ich will auf den titel nochmal zugreifen...
wie mach ich das?

also
list.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.white, 5), erg_split[1], TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51)));

^^ das hab ich (kann ich auch drauf zugreifen) nur wie bekomm ich erg_split[1] ausgelesen?
 

Kaladial

Bekanntes Mitglied
ich hätte ihn für ne andere anzeige gebraucht hab das aber nun etwas anders gelöst... nich schön aber geht ;)

zu dem sortieren haste noch keine idee?
 

Kaladial

Bekanntes Mitglied
IWAV0052E Invocation Target Exception creating DlgUserGrpVerwaltung
java.lang.NoSuchMethodException: DlgUserGrpVerwaltung.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getDeclaredConstructor(Unknown Source)
at org.eclipse.ve.internal.java.vce.launcher.remotevm.JFCLauncher$1.run(JFCLauncher.java:56)
at java.awt.event.InvocationEvent.dispatch(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)




^^ bekomm ich wenn ich deine version ausführen will :(
 

André Uhres

Top Contributor
Kaladial hat gesagt.:
IWAV0052E Invocation Target Exception creating DlgUserGrpVerwaltung
java.lang.NoSuchMethodException: DlgUserGrpVerwaltung.<init>()..
package angepasst?

EDIT: In importListData habe ich noch dies hinzugefügt:
Code:
           if(rows != null && inSameGroup(dropIndex, rows[0], model)){
                rows = null;
                return;
            }
Um zu verhindern, daß Zeilen innerhalb einer Gruppe verschoben werden.
Das führt nämlich in Verbindung mit dem sort zu gefährlichen Kollisionen :wink:
 

Kaladial

Bekanntes Mitglied
hmmm hab das package komplett raus geschmissen da ich in dem projekt auch keins bzw das default package genommen hab

edit: habs jetzt ma mit nem package probiert... genau das selbe...

2. edit: geht doch ... eclipse neu gestartet gings... seltsam naja :) thx :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JavaFX JavaFX images per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 1
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
AmsananKING ListView Drag And Drop AWT, Swing, JavaFX & SWT 0
AmsananKING Drag And Drop Filenames Inside A Listview AWT, Swing, JavaFX & SWT 1
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
M Polygon per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 26
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
F Drag&Drop mit Transparenter Farbe bei PNG AWT, Swing, JavaFX & SWT 0
D JavaFX Pane per Drag&Drop bewegen? AWT, Swing, JavaFX & SWT 2
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
J Drag and Drop von eigenen Objekten AWT, Swing, JavaFX & SWT 3
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
T Swing Drag and Drop für JComponents AWT, Swing, JavaFX & SWT 1
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
F Drag und Drop AWT, Swing, JavaFX & SWT 0
L JavaFX JavaFX Chart Drag and Drop AWT, Swing, JavaFX & SWT 3
D JavaFX Drag&Drop mehrerer TreeViews oder TableViews AWT, Swing, JavaFX & SWT 1
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
U Drag and Drop mit imageview AWT, Swing, JavaFX & SWT 0
U Drag and Drop imageviews AWT, Swing, JavaFX & SWT 8
D SteelSeries in Netbeans als Drag-and-Drop einbinden AWT, Swing, JavaFX & SWT 0
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
S Swing Suche Drag & Drop Beispiele AWT, Swing, JavaFX & SWT 1
A Drag and Drop mit JAVAFX- Scenebuilder AWT, Swing, JavaFX & SWT 1
R Performance Drag and Drop & Timer AWT, Swing, JavaFX & SWT 3
R Drag and Drop Problem auf Jpanel AWT, Swing, JavaFX & SWT 2
N Swing JTable und Drag und Drop AWT, Swing, JavaFX & SWT 2
A Drag and Drop eigener Objekte AWT, Swing, JavaFX & SWT 7
C Drag and Drop (inventar) AWT, Swing, JavaFX & SWT 15
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5
Iron Monkey JFileChooser - Drag and Drop AWT, Swing, JavaFX & SWT 5
Iron Monkey Nach Drag & Drop die Datei auf Komponent darstellen AWT, Swing, JavaFX & SWT 2
M AWT Drag n Drop-Support für Component AWT, Swing, JavaFX & SWT 5
HaukeG Swing Drag & Drop in verschiedenen Varianten AWT, Swing, JavaFX & SWT 4
S Swing Drag&Drop mit TransferHandler und JPanels AWT, Swing, JavaFX & SWT 8
C Swing Simulation von Drag and Drop Events AWT, Swing, JavaFX & SWT 3
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
R Drag 'n Drop AWT, Swing, JavaFX & SWT 3
S Selektion bei Drag&Drop AWT, Swing, JavaFX & SWT 4
C Swing Drag and Drop mit Objekten in einem Fenster. AWT, Swing, JavaFX & SWT 9
T SWT Drag&Drop: Eclipse FileTransfer mit Icons AWT, Swing, JavaFX & SWT 14
F Drag & Drop durch Verbindungslinien AWT, Swing, JavaFX & SWT 10
T Swing Drag and Drop - JLabels tauschen statt überschreiben AWT, Swing, JavaFX & SWT 11
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
B Drag and Drop AWT, Swing, JavaFX & SWT 6
K Drag and Drop Workbench AWT, Swing, JavaFX & SWT 2
P SWT Eclipse Draw2D Drag and Drop (ruckelt) AWT, Swing, JavaFX & SWT 4
F SWT Drag and Drop im TreeViewer AWT, Swing, JavaFX & SWT 4
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
A TransferHandler & Drag n' Drop AWT, Swing, JavaFX & SWT 2
R Drag an Drop JTable Zelle AWT, Swing, JavaFX & SWT 6
D Drag & Drop - node.isRoot AWT, Swing, JavaFX & SWT 3
E Swing Drag n Drop Verschieben von Labels o.ä. AWT, Swing, JavaFX & SWT 10
E Swing Beim Drag & Drop, Drag verbieten?! AWT, Swing, JavaFX & SWT 2
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
F Swing Problem mit Drag&Drop in JTable AWT, Swing, JavaFX & SWT 4
C keine weiteren Events während Drag&Drop Operation möglich? AWT, Swing, JavaFX & SWT 5
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
0 Swing Drag n' Drop Bug wenn Source und Target gleiche Komponente? AWT, Swing, JavaFX & SWT 4
C Drag and Drop JPanel auf JPanel nach drop erneut verschieben? AWT, Swing, JavaFX & SWT 3
M Swing JTable Drag'n'Drop von Dateien AWT, Swing, JavaFX & SWT 3
M Drag and Drop: Quellfenster AWT, Swing, JavaFX & SWT 2
M Buttons per Drag & Drop im GridBagLayout verschieben AWT, Swing, JavaFX & SWT 6
M Swing JList > Drag & Drop AWT, Swing, JavaFX & SWT 2
C Drag an Drop vom JTree zur JTable AWT, Swing, JavaFX & SWT 4
Z Drag and Drop auf Application AWT, Swing, JavaFX & SWT 3
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
H Drag&Drop von JComponents AWT, Swing, JavaFX & SWT 6
G JTable drag and drop AWT, Swing, JavaFX & SWT 4
H Drag&Drop mit GWT AWT, Swing, JavaFX & SWT 8
B Swing Drag&Drop einzelner Zellen in einer JTable AWT, Swing, JavaFX & SWT 12
A Swing Drag and Drop TreeNode User Object AWT, Swing, JavaFX & SWT 3
P JList: Reihenfolge der Elemente per Drag'n'Drop ändern. AWT, Swing, JavaFX & SWT 9
K Swing Wie ändere ich die default action für Drag&Drop AWT, Swing, JavaFX & SWT 6
R JLayeredPane - Drag&Drop - mouseDragged AWT, Swing, JavaFX & SWT 6
C JTable mit RowSorter und Drag & Drop: Zeile verschieben AWT, Swing, JavaFX & SWT 4
V SWT TreeViewer Drag'n'Drop LocalSelectionTransfer AWT, Swing, JavaFX & SWT 10
R Swing JLayeredPane - Drag&Drop Positionen vertauschen AWT, Swing, JavaFX & SWT 3
F Drag & Drop mit eigenen Komponenten AWT, Swing, JavaFX & SWT 2
B SWT - Drag & Drop innerhalb einer Table AWT, Swing, JavaFX & SWT 3
S Drag'n'Drop AWT, Swing, JavaFX & SWT 8
E Drag&Drop JTable; Renderer füllt alle Zellen AWT, Swing, JavaFX & SWT 10
M Drag & Drop in Swing (createTransferable) AWT, Swing, JavaFX & SWT 6
T Drag Quelle beim Drop AWT, Swing, JavaFX & SWT 6
A Drag & Drop von Zeilen innerhalb einer Tabelle AWT, Swing, JavaFX & SWT 2
E Drag & Drop von jTree in JList AWT, Swing, JavaFX & SWT 5
P Dateien per Drag&Drop ins Java-Fenster ziehen AWT, Swing, JavaFX & SWT 8
G JTree Node ggf. aufklappen bei Drag & Drop? AWT, Swing, JavaFX & SWT 7
J Drag'n Drop imm selben Frame unterbinden AWT, Swing, JavaFX & SWT 3
S Table Row per Drag and Drop in andere Table schieben? AWT, Swing, JavaFX & SWT 14
X wiedermal Drag n Drop AWT, Swing, JavaFX & SWT 2
P Drag & Drop AWT, Swing, JavaFX & SWT 2
X Drag and Drop AWT, Swing, JavaFX & SWT 2
F Drag&Drop Jlist -> JList AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben