Я хотел бы перетащить внешние файлы (например, из обозревателя Windows) в JTable. У кого-нибудь есть пример кода, как это делается?Как перетащить файлы в JTable?
7
A
ответ
11
Просто используйте класс DropTarget для получения событий сбрасывания. Вы можете различать капли в текущей таблице (доступные столбцы/строки) и в панели прокрутки (до, например, добавлять новые строки)
import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDropEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class SwingTest extends JFrame{
private JTable table = new JTable();
private JScrollPane scroll = new JScrollPane(table);
private DefaultTableModel tm = new DefaultTableModel(new String[]{"a","b","c"},2);
public SwingTest() {
table.setModel(tm);
table.setDropTarget(new DropTarget(){
@Override
public synchronized void drop(DropTargetDropEvent dtde) {
Point point = dtde.getLocation();
int column = table.columnAtPoint(point);
int row = table.rowAtPoint(point);
// handle drop inside current table
super.drop(dtde);
}
});
scroll.setDropTarget(new DropTarget(){
@Override
public synchronized void drop(DropTargetDropEvent dtde) {
// handle drop outside current table (e.g. add row)
super.drop(dtde);
}
});
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(scroll);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(800,600);
this.setVisible(true);
}
public static void main(String[] args) {
new SwingTest();
}
}
7
@yossale Вам нужно добавить следующий код метода:
public synchronized void drop(DropTargetDropEvent dtde)
{
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
Transferable t = dtde.getTransferable();
List fileList = (List)t.getTransferData(DataFlavor.javaFileListFlavor);
File f = (File)fileList.get(0);
table.setValueAt(f.getAbsolutePath(), row, column);
table.setValueAt(f.length(), row, column+1);
}
Вместо настройки вы можете добавлять строки в таблицу после проверки того, что данные не дублируются и добавить информацию о файле в виде новых строк в таблицу.
Смежные вопросы
- 1. Как перетащить файлы в приложение?
- 2. C# перетащить файлы в форму
- 3. Ckeditor перетащить файлы txt
- 4. Java: Как перетащить файл из JTable в собственную файловую систему?
- 5. Как отключить выбор ячейки jtable с помощью мышек и перетащить
- 6. (перетащить п) перетаскивать файлы в Firefox
- 7. Невозможно перетащить файлы в эмулятор Microsoft Android
- 8. Не удается перетащить файлы в Обозреватель решений
- 9. Прочитать файлы и вставить данные в JTable
- 10. Как перетащить внешние файлы в браузер с помощью AngularJS
- 11. Как перетащить файлы n в ListBox, показывая путь к файлу?
- 12. Java Swing как перетащить файлы из dir в dir
- 13. Как перетащить mp3-файлы в список без пути к файлу?
- 14. Как перетащить файлы из Explorer в Liquid XML Studio?
- 15. Как перетащить файлы из приложения C# winforms в сообщение Outlook
- 16. Перетащить файлы непосредственно на форму без контроля
- 17. как перетащить в android?
- 18. Как перетащить и перетащить из Outlook?
- 19. Невозможно перетащить и перемещать файлы в Project Navigator в Xcode
- 20. Как я могу перетащить файлы, когда нет исходного каталога?
- 21. Как перетащить файлы из приложения на рабочий стол?
- 22. Как преобразовать JTable Vector в JTable ArrayList?
- 23. Как скопировать JTable в другой JTable
- 24. jQuery JTable как перетаскивать строки
- 25. JTable: как изменить вид jtable
- 26. Таблица Jtable Jtable как формат
- 27. Как визуализировать JTable внутри JTable?
- 28. jQuery перетащить и перетащить снова
- 29. JTable - перетаскивание
- 30. C# Как перетащить перетащить вкладку firefox в приложение winform
Этот код не делает ничего, кроме отображения таблицы. При перетаскивании к нему ничего не происходит – Yossale