にドラッグしようとしてMyObject
いJTable
ます。しかし、方法を見つけることができません。
この点について何か助けを得ることができますか? (できれば点 3)
**1.**私が見つけた唯一の良い例は次のとおりです。
ガイド: http://www.bryanesmith.com/docs/drag-and-drop-java-5/ ソース: http://www.bryanesmith.com/docs/drag-and-drop-java-5/DragAndDropPanelsDemo.ジャワ
これに関する問題は、私が得ていることです:
java.lang.ClassNotFoundException: RandomDragAndDropPanel (行: 197)
理由はありますか?
**2.**他の良い例について何かヒントはありますか?
または **3.**これは私がまとめた例です。ただし、表示されるだけで、表示さString
れませんMyObject
:
この作業を行うために私がしたことは、追加することでした:
public static DataFlavor FLAVOR = new DataFlavor(MyObject.class, "My Object");
しかし、問題がimplementing Transferable
あり、に追加TransferHandler
しましたMyObject
。どのように見えるべきか考えていますか?
import java.awt.Color;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.DropMode;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.TransferHandler;
import javax.swing.table.DefaultTableModel;
public class FlavorTest extends JFrame {
// FLAVOR = STRING
private DataFlavor FLAVOR = new DataFlavor(String.class, "DataWrapper");
public FlavorTest() {
// CREATE TABLE
DefaultTableModel model = getDefaultTableModel();
JTable table = new JTable(model);
addDragSupport(table, model);
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
table.setDropMode(DropMode.INSERT_ROWS);
table.setFillsViewportHeight(true);
// ADD TABLE AND DRAG OBJECT TO PANEL
JPanel panel = new JPanel();
panel.add(new MyObject("DRAG OBJECT"));
panel.add(table);
// ADD PANEL TO JFRAME
this.add(panel);
this.pack();
this.setDefaultCloseOperation(1);
this.setVisible(true);
}
// CREATE TABLE DATA
private DefaultTableModel getDefaultTableModel() {
String[] cols = { "a", "b", "c" };
String[][] rows = { { "1", "2", "3" } };
return new DefaultTableModel(rows, cols);
}
// SET TRANSFER HANDLER TO TABLE
private void addDragSupport(final JTable table, final DefaultTableModel model) {
table.setTransferHandler(new TransferHandler() {
public boolean canImport(TransferSupport support) {
return true;
}
public boolean importData(TransferSupport support) {
JTable.DropLocation dl = (JTable.DropLocation) support.getDropLocation();
int row = dl.getRow();
Object data;
try {
data = (Object) support.getTransferable().getTransferData(FLAVOR);
} catch (UnsupportedFlavorException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
String[] rowData = data.toString().split(",");
model.insertRow(row, rowData);
return true;
}
});
}
public static void main(String[] args) {
new FlavorTest();
}
// CONTAINS A DRAGABLE JLIST WITH A STRING
private class MyObject extends JPanel {
public MyObject(String text) {
DefaultListModel<String> model = new DefaultListModel<String>();
model.addElement(text);
JList<String> list = new JList<String>(model);
list.setModel(model);
list.setDragEnabled(true);
list.setFocusable(false);
this.add(list);
this.setBorder(BorderFactory.createLineBorder(Color.black));
}
}
}