TITLE:TransferHandlerを使ってJTableの行をドラック&ドロップ、並べ替え
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2009-09-07
*TransferHandlerを使ってJTableの行をドラック&ドロップ、並べ替え [#fbf1230b]
JTableの行を複数選択し、ドラック&ドロップで並べ替えを可能にするTransferHandlerを作成します。

-&jnlp;
-&jar;
-&zip;

//#screenshot
#ref(http://lh3.ggpht.com/_9Z4BYR88imo/TQTLg-5HyXI/AAAAAAAAAXs/Wda5rMSf-1c/s800/DnDReorderTable.png)

**サンプルコード [#y7890e8f]
#code(link){{
JTable table = new JTable(model);
table.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
table.setTransferHandler(new TableRowTransferHandler());
table.setDropMode(DropMode.INSERT_ROWS);
table.setDragEnabled(true);
}}

**解説 [#z3172930]
上記のサンプルのTransferHandler((JDK 6 で導入されたTransferHandler#canImport メソッドなどを使用しています。))は、[[TransferHandlerを使ったJListのドラック&ドロップによる並べ替え>Swing/DnDReorderList]]のものとほぼ同じです。

----
[[JTableの行をドラッグ&ドロップ>Swing/DnDTable]]とは異なり、複数行を選択してDrag&Dropによる移動が可能になっています。

**参考リンク [#z9df5392]
-[http://docs.oracle.com/javase/tutorial/uiswing/examples/dnd/index.html#BasicDnD Drag and Drop and Data Transfer: Examples (The Java™ Tutorials > Creating a GUI with JFC/Swing > Drag and Drop and Data Transfer)]
--[http://docs.oracle.com/javase/tutorial/uiswing/examples/dnd/DropDemoProject/src/dnd/ListTransferHandler.java ListTransferHandler.java]
-[[TransferHandlerを使ったJListのドラック&ドロップによる並べ替え>Swing/DnDReorderList]]
-[[JTableの行をドラッグ&ドロップ>Swing/DnDTable]]
-[[JTableの行を別のJTableにドラッグして移動>Swing/DragRowsAnotherTable]]

**コメント [#ldd8458d]
- テスト -- [[aterai]] &new{2009-09-26 (土) 02:19:20};
-- [[JTableの行を別のJTableにドラッグして移動>Swing/DragRowsAnotherTable]]に移動。

#comment