Сначала я просто хочу признать, что я не самый острый разработчик Java. Мои сильные стороны/опыт - это в основном браузеры JavaScript и т. Д.Перетаскивание файла из JList в окно проводника Windows
Меня попросили создать апплет, который можно использовать для перетаскивания файлов в браузер (IE7). Это не проблема. Я использовал класс FileDrop от here.
Итак, мы собираемся отправиться в прямом эфире, но клиент решил показать приложение в пуле пользователей, что приложение должно иметь возможность перетаскивать файлы из интерфейса и в проводник/рабочий стол Windows и т. Д. . Такие вещи.
Способ настройки пользовательского интерфейса: у них есть список файлов в области содержимого справа, а область навигации слева - дерево каталогов и т. Д., Которые, когда пользователь нажимает, получают список файлов в области содержимого. Когда пользователь нажимает и удерживает мышь, апплет в конечном итоге появляется с загруженным им файлом, и пользователь щелкает, чтобы перетащить этот файл из интерфейса и в другой целевой объект в пользовательском интерфейсе или в проводник Windows и т. Д.
Вот код из апплета:
public MyFileDrop() {
panel = new JPanel();
panel.setLayout(new GridBagLayout());
panel.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
panel.setBackground(new Color(245, 245, 245));
JLabel label = new JLabel("+", JLabel.CENTER);
label.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 15));
label.setForeground(Color.gray);
panel.add(label);
DefaultListModel model = new DefaultListModel();
fileList = new JList(model);
fileList.setDragEnabled(true);
fileList.setSize(250, 25);
panel.add(fileList);
panel.addMouseListener(new MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
System.out.println("mouseEntered");
File file = self.getAndSaveLocalFile(self.documentUrl, self.name, self.id);
if (!file.isDirectory())
((DefaultListModel) ((JList) panel.getComponent(1)).getModel()).addElement(file);
}
...
Когда я перетащить файл к окну проводника Windows, это дает мне круг слэш изображение (то есть, как «не-курения» без сигареты). И он не попадает в цели в пользовательском интерфейсе. Я передал файл .getCannonicalPath() файла, и все, кажется, указывает на то, что я перетаскиваю файл, но система, похоже, не распознает это. Я посмотрел на этот вопрос:
DragNDrop from Java to Windows Explorer
Но я использую встроенный в перетащить и падение особенность JList, и я не знаю, как изменить MimeType. Нужно ли мне писать собственный TransferHandler? Если да, то что нужно делать именно так?
И ..what ЯВЛЯЕТСЯ ВАШЕЙ вопрос? –
нажмите 'ctrl-f' и введите символ'? ', И в зависимости от того, какой браузер вы используете, вам может понадобиться или не нужно нажать' enter'. Кроме того, прокрутите страницу до конца и прочитайте последние два предложения. – tjb1982