OVH Cloud OVH Cloud

Drag & Drop sous Java

1 réponse
Avatar
theBrave
Bonjour,

J'essaie de faire du Drag&Drop entre plusieurs composants. Pour =EAtre
plus pr=E9cis, je veut pouvoir glisser des morceaux d'image, ou de
panels vers une boite de texte pour y inscrire le texte qui est
associ=E9. J'essaie de mimer l'exemple label de la page suivante:
http://java.sun.com/docs/books/tutorial/uiswing/misc/dnd.html#label.
Malheureusement, bien que le clic soit reconnu, l'op=E9ration de
drag&drop n'est jamais enregistr=E9e.

Jean

package Sample;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TestScrollWindow extends JFrame {
public TestScrollWindow() {
JPanel bottomPanel =3D new JPanel(new FlowLayout());
JTextField jtf =3D new JTextField(30);
jtf.setDragEnabled(true);
bottomPanel.add(jtf);
jtf =3D new JTextField(30);
jtf.setDragEnabled(true);
bottomPanel.add(jtf);

getContentPane().setLayout(new BorderLayout());
getContentPane().add(bottomPanel, BorderLayout.SOUTH);
getContentPane().add(new BluePanel("JPanel"), BorderLayout.NORTH);

// Truc a mettre partout
setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
pack();
setVisible(true);
}
public static void main(String[] args) {
new TestScrollWindow();
}
}

package Sample;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.TransferHandler;
public class BluePanel extends JPanel {
public BluePanel(String name) {
setBackground(Color.BLUE);
setTransferHandler(new TransferHandler(name));
addMouseListener(new DragMouseAdapter());
}
public class DragMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
JComponent c =3D (JComponent)e.getSource();
TransferHandler handler =3D c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.COPY);
}
}
}

1 réponse

Avatar
TestMan
A lire :
http://weblogs.java.net/blog/shan_man/archive/2006/01/first_class_dra.html

A+
TM

Bonjour,

J'essaie de faire du Drag&Drop entre plusieurs composants. Pour être
plus précis, je veut pouvoir glisser des morceaux d'image, ou de
panels vers une boite de texte pour y inscrire le texte qui est
associé. J'essaie de mimer l'exemple label de la page suivante:
http://java.sun.com/docs/books/tutorial/uiswing/misc/dnd.html#label.
Malheureusement, bien que le clic soit reconnu, l'opération de
drag&drop n'est jamais enregistrée.

Jean

package Sample;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TestScrollWindow extends JFrame {
public TestScrollWindow() {
JPanel bottomPanel = new JPanel(new FlowLayout());
JTextField jtf = new JTextField(30);
jtf.setDragEnabled(true);
bottomPanel.add(jtf);
jtf = new JTextField(30);
jtf.setDragEnabled(true);
bottomPanel.add(jtf);

getContentPane().setLayout(new BorderLayout());
getContentPane().add(bottomPanel, BorderLayout.SOUTH);
getContentPane().add(new BluePanel("JPanel"), BorderLayout.NORTH);

// Truc a mettre partout
setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
pack();
setVisible(true);
}
public static void main(String[] args) {
new TestScrollWindow();
}
}

package Sample;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.TransferHandler;
public class BluePanel extends JPanel {
public BluePanel(String name) {
setBackground(Color.BLUE);
setTransferHandler(new TransferHandler(name));
addMouseListener(new DragMouseAdapter());
}
public class DragMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
JComponent c = (JComponent)e.getSource();
TransferHandler handler = c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.COPY);
}
}
}