This program demonstrates the basic Swing support for drag and drop.
/*
This program is a part of the companion code for Core Java 8th ed.
(http://horstmann.com/corejava)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.DefaultListModel;
import javax.swing.JColorChooser;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.TransferHandler;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.tree.DefaultMutableTreeNode;
/**
* This program demonstrates the basic Swing support for drag and drop.
*
* @version 1.10 2007-09-20
* @author Cay Horstmann
*/
public class SwingDnDTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new SwingDnDFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class SwingDnDFrame extends JFrame {
public SwingDnDFrame() {
setTitle("SwingDnDTest");
JTabbedPane tabbedPane = new JTabbedPane();
JList list = SampleComponents.list();
tabbedPane.addTab("List", list);
JTable table = SampleComponents.table();
tabbedPane.addTab("Table", table);
JTree tree = SampleComponents.tree();
tabbedPane.addTab("Tree", tree);
JFileChooser fileChooser = new JFileChooser();
tabbedPane.addTab("File Chooser", fileChooser);
JColorChooser colorChooser = new JColorChooser();
tabbedPane.addTab("Color Chooser", colorChooser);
final JTextArea textArea = new JTextArea(4, 40);
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setBorder(new TitledBorder(new EtchedBorder(), "Drag text here"));
JTextField textField = new JTextField("Drag color here");
textField.setTransferHandler(new TransferHandler("background"));
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
textArea.setText("");
}
});
tree.setDragEnabled(true);
table.setDragEnabled(true);
list.setDragEnabled(true);
fileChooser.setDragEnabled(true);
colorChooser.setDragEnabled(true);
textField.setDragEnabled(true);
add(tabbedPane, BorderLayout.NORTH);
add(scrollPane, BorderLayout.CENTER);
add(textField, BorderLayout.SOUTH);
pack();
}
}
/*
* This program is a part of the companion code for Core Java 8th ed.
* (http://horstmann.com/corejava)
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
class SampleComponents {
public static JTree tree() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("World");
DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA");
root.add(country);
DefaultMutableTreeNode state = new DefaultMutableTreeNode("California");
country.add(state);
DefaultMutableTreeNode city = new DefaultMutableTreeNode("San Jose");
state.add(city);
city = new DefaultMutableTreeNode("Cupertino");
state.add(city);
state = new DefaultMutableTreeNode("Michigan");
country.add(state);
city = new DefaultMutableTreeNode("Ann Arbor");
state.add(city);
country = new DefaultMutableTreeNode("Germany");
root.add(country);
state = new DefaultMutableTreeNode("Schleswig-Holstein");
country.add(state);
city = new DefaultMutableTreeNode("Kiel");
state.add(city);
return new JTree(root);
}
public static JList list() {
String[] words = { "quick", "brown", "hungry", "wild", "silent", "huge", "private", "abstract",
"static", "final" };
DefaultListModel model = new DefaultListModel();
for (String word : words)
model.addElement(word);
return new JList(model);
}
public static JTable table() {
Object[][] cells = { { "Mercury", 2440.0, 0, false, Color.YELLOW },
{ "Venus", 6052.0, 0, false, Color.YELLOW }, { "Earth", 6378.0, 1, false, Color.BLUE },
{ "Mars", 3397.0, 2, false, Color.RED }, { "Jupiter", 71492.0, 16, true, Color.ORANGE },
{ "Saturn", 60268.0, 18, true, Color.ORANGE }, { "Uranus", 25559.0, 17, true, Color.BLUE },
{ "Neptune", 24766.0, 8, true, Color.BLUE }, { "Pluto", 1137.0, 1, false, Color.BLACK } };
String[] columnNames = { "Planet", "Radius", "Moons", "Gaseous", "Color" };
return new JTable(cells, columnNames);
}
}
Related examples in the same category