• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

problem with Drag and Drop

 
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hello all,
I am currently facing a problem with Drag and Drop using jdk1.3. The code works fine with jdk1.4. I want to drag a particular node from a tree and drop it on a table. I have implemented appropriate listeners but the drop function doesn't seem to work..It doesn't throw any exception as well..i am pasting the code.. I am sorry i know its too long. But it would be great if someone can help me out. I am new to java swing
-- ganboy
import java.io.*;
import java.awt.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import java.awt.dnd.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import javax.swing.table.*;
import javax.swing.border.*;
import java.awt.datatransfer.*;
/*<applet code="DragDropApplet.class" width=900 height=300> </applet>*/
public class DragDropApplet extends JApplet implements DragSourceListener, DragGestureListener,DropTargetListener,ActionListener {
JTree jtr;
JTable jtab;
JTable jtab1;
JTable jtab2;
JPanel jPanel;
DragSource ds;
DropTarget dt1;
DropTarget dt2;
DropTarget dt3;
DropTarget dt4;
DropTarget dt5;
DropTarget dt6;
JScrollPane scroller1;
JScrollPane scroller2;
JScrollPane scroller3;
JScrollPane scroller4;
TreePath selPath;
DefaultTreeModel dmodel;
DefaultTableModel model;
DefaultTableModel model1;
DefaultTableModel model2;
DefaultMutableTreeNode top;
Hashtable hash1;
StringSelection transferable;
Vector rowVec;
Vector rowVec1;
Vector rowVec2;
public void init() {
System.out.println("got in init().........................................");
this.setSize(700,400);
hash1 = new Hashtable();
try
{
top = new DefaultMutableTreeNode("List of tables");
DefaultMutableTreeNode top1 = new DefaultMutableTreeNode("Table1");
top1.add(new DefaultMutableTreeNode("Field1"));
top1.add(new DefaultMutableTreeNode("Field2"));
top1.add(new DefaultMutableTreeNode("Field3"));
top1.add(new DefaultMutableTreeNode("Field4"));
top1.add(new DefaultMutableTreeNode("Field5"));
top.add(top1);
DefaultMutableTreeNode top2 = new DefaultMutableTreeNode("Table2");
top2.add(new DefaultMutableTreeNode("Field1"));
top2.add(new DefaultMutableTreeNode("Field2"));
top2.add(new DefaultMutableTreeNode("Field3"));
top2.add(new DefaultMutableTreeNode("Field4"));
top2.add(new DefaultMutableTreeNode("Field5"));
top.add(top2);
DefaultMutableTreeNode top3 = new DefaultMutableTreeNode("Table3");
top3.add(new DefaultMutableTreeNode("Field1"));
top3.add(new DefaultMutableTreeNode("Field2"));
top3.add(new DefaultMutableTreeNode("Field3"));
top3.add(new DefaultMutableTreeNode("Field4"));
top3.add(new DefaultMutableTreeNode("Field5"));
top.add(top3);
DefaultMutableTreeNode top4 = new DefaultMutableTreeNode("Table4");
top4.add(new DefaultMutableTreeNode("Field1"));
top4.add(new DefaultMutableTreeNode("Field2"));
top4.add(new DefaultMutableTreeNode("Field3"));
top4.add(new DefaultMutableTreeNode("Field4"));
top4.add(new DefaultMutableTreeNode("Field5"));
top.add(top4);
this.getContentPane().setLayout(new GridLayout(1,2));
dmodel = new DefaultTreeModel(top);
jtr = new JTree(dmodel);
scroller1 = new JScrollPane(jtr);
this.getContentPane().add(scroller1);
JPanel jpanel = new JPanel();
jpanel.setLayout(new GridLayout(3,1));
/* Creating Field List table*/
JPanel topPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
topPanel.add(new Label("Select List"), BorderLayout.NORTH);
jtab = new JTable();
model2 = (DefaultTableModel)jtab.getModel();
model2.addColumn("Field");
scroller2 = new JScrollPane(jtab);
topPanel.add(scroller2, BorderLayout.CENTER);
JButton jbtn1 = new JButton("Delete");
jbtn1.setActionCommand("delete1");
jbtn1.addActionListener(this);
JPanel jsouthPanel1 = new JPanel();
jsouthPanel1.setLayout(new BorderLayout());
jsouthPanel1.add(jbtn1,BorderLayout.EAST);
topPanel.add(jsouthPanel1, BorderLayout.SOUTH);
jpanel.add(topPanel);
/* Creating Criteria table*/
JPanel middlePanel = new JPanel();
middlePanel.setLayout(new BorderLayout());
middlePanel.add(new Label("Criteria"), BorderLayout.NORTH);
jtab1 = new JTable();
model = (DefaultTableModel)jtab1.getModel();
model.addColumn("Field");
model.addColumn("Field/Value");
model.addColumn("AND/OR");
JComboBox comboBox = new JComboBox();
comboBox.addItem("AND");
comboBox.addItem("OR");
TableColumn tempCol1 = jtab1.getColumnModel().getColumn(0);
tempCol1.setResizable(false);
TableColumn tempCol2 = jtab1.getColumnModel().getColumn(1);
tempCol2.setResizable(false);
TableColumn tempCol3 = jtab1.getColumnModel().getColumn(2);
tempCol3.setResizable(false);
tempCol3.setCellEditor(new DefaultCellEditor(comboBox));
scroller3 = new JScrollPane(jtab1);
middlePanel.add(scroller3, BorderLayout.CENTER);
JButton jbtn2 = new JButton("Delete");
jbtn2.setActionCommand("delete2");
jbtn2.addActionListener(this);
JPanel jsouthPanel2 = new JPanel();
jsouthPanel2.setLayout(new BorderLayout());
jsouthPanel2.add(jbtn2,BorderLayout.EAST);
middlePanel.add(jsouthPanel2, BorderLayout.SOUTH);
jpanel.add(middlePanel);
/* Creating sort Criteria table*/
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new BorderLayout());
bottomPanel.add(new Label("Sort Criteria"), BorderLayout.NORTH);
jtab2 = new JTable();
model1 = (DefaultTableModel)jtab2.getModel();
model1.addColumn("Field");
model1.addColumn("Sort by");
JComboBox comboBox1 = new JComboBox();
comboBox1.addItem("ASCENDING");
comboBox1.addItem("DESCENDING");
TableColumn tempCol4 = jtab2.getColumnModel().getColumn(0);
tempCol4.setResizable(false);
TableColumn tempCol5 = jtab2.getColumnModel().getColumn(1);
tempCol5.setResizable(false);
tempCol5.setCellEditor(new DefaultCellEditor(comboBox1));
scroller4 = new JScrollPane(jtab2);
bottomPanel.add(scroller4, BorderLayout.CENTER);
JButton jbtn3 = new JButton("Delete");
jbtn3.setActionCommand("delete3");
jbtn3.addActionListener(this);
JPanel jsouthPanel3 = new JPanel();
jsouthPanel3.setLayout(new BorderLayout());
jsouthPanel3.add(jbtn3,BorderLayout.EAST);
bottomPanel.add(jsouthPanel3, BorderLayout.SOUTH);
jpanel.add(bottomPanel);
this.getContentPane().add(jpanel);
MouseListener ml = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
selPath = jtr.getPathForLocation(e.getX(), e.getY());
}
};
jtr.addMouseListener(ml);
ds = new DragSource();
DragGestureRecognizer dgr = ds.createDefaultDragGestureRecognizer(jtr, DnDConstants.ACTION_COPY, this);
dt1 = new DropTarget(jtab, this);
dt2 = new DropTarget(jtab1, this);
dt3 = new DropTarget(jtab2, this);
dt4 = new DropTarget(scroller2, this);
dt5 = new DropTarget(scroller3, this);
dt6 = new DropTarget(scroller4, this);
setVisible(true);
}catch (Exception e){
e.printStackTrace();
}
}
/* If delete buttons clicked */
public void actionPerformed(ActionEvent e){
if("delete1".equals(e.getActionCommand())){
int delRows[] = jtab.getSelectedRows();
for(int j=0; j<delRows.length; j++){
model2.removeRow(delRows[j]-j);
}
}
if("delete2".equals(e.getActionCommand())){
int delRows[] = jtab1.getSelectedRows();
for(int j=0; j<delRows.length; j++){
model.removeRow(delRows[j]-j);
}
}
if("delete3".equals(e.getActionCommand())){
int delRows[] = jtab2.getSelectedRows();
for(int j=0; j<delRows.length; j++){
model1.removeRow(delRows[j]-j);
}
}
}
public void dragGestureRecognized(DragGestureEvent dge) {
DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)selPath.getLastPathComponent();
/* Storing the content of the dragged node*/
if(dmtn.getChildCount() == 0){
System.out.println("Drag Gesture Recognized!" + (selPath.getLastPathComponent()).toString() );
transferable = new StringSelection(dmtn.getParent()+"."+(selPath.getLastPathComponent()).toString());
ds.startDrag(dge, DragSource.DefaultCopyDrop, transferable, this);
}
}
public void dragEnter(DragSourceDragEvent dsde) {
//System.out.println("Drag Enter");
}
public void dragExit(DragSourceEvent dse) {
}
public void dragOver(DragSourceDragEvent dsde) {
}
public void dragDropEnd(DragSourceDropEvent dsde) {
}
public void dropActionChanged(DragSourceDragEvent dsde) {
}
public void dragEnter(DropTargetDragEvent dtde) {
}
public void dragExit(DropTargetEvent dte) {
}
public void dragOver(DropTargetDragEvent dtde) {
}
public void dropActionChanged(DropTargetDragEvent dtde) {
System.out.println("Drop Action Changed");
}
public void drop(DropTargetDropEvent dtde) {
System.out.println("Inside drop function");
try {
Object obj = dtde.getSource();
Transferable tr = dtde.getTransferable();
DataFlavor[] flavors = tr.getTransferDataFlavors();
if(obj.equals((Object)dt2) || obj.equals((Object)dt5)){
System.out.println("Tab val 2 ");
for (int i = 0; i < flavors.length; i++) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
rowVec1 = new Vector();
rowVec1.add(tr.getTransferData(flavors[i]));
model.addRow(rowVec1);
jtab1.updateUI();
dtde.dropComplete(true);
return;
}
}
if(obj.equals((Object)dt3) || obj.equals((Object)dt6)){
System.out.println("Tab val 3 ");
for (int i = 0; i < flavors.length; i++) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
rowVec2 = new Vector();
rowVec2.add(tr.getTransferData(flavors[i]));
model1.addRow(rowVec2);
jtab2.updateUI();
dtde.dropComplete(true);
return;
}
}
if(obj.equals((Object)dt1) || obj.equals((Object)dt4)){
System.out.println("Tab val 1 ");
for (int i = 0; i < flavors.length; i++) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
rowVec = new Vector();
rowVec.add(tr.getTransferData(flavors[i]));
model2.addRow(rowVec);
jtab.updateUI();
dtde.dropComplete(true);
return;
}
}
} catch (Exception e) {
e.printStackTrace();
dtde.rejectDrop();
}
}
}
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic