Текстовое перетаскивание не работает от браузера Chromium в Java Application на Linux, работает с FirefoxLinux

Ответить
Anonymous
 Текстовое перетаскивание не работает от браузера Chromium в Java Application на Linux, работает с Firefox

Сообщение Anonymous »

Я пытаюсь перетаскивать строку таблицы из Google Chrome в приложение Java Swing на Linux, но это не работает. Я также попытался отладить приложение Java, и я не получаю никакого вызова DOLL () или CanimportData () или любой другой метод из обработчика Drop Java. Однако та же самая операция перетаскивания работает при использовании Firefox. < /P>
Кроме Gedit работает нормально. < /li>
[*] перетаскивание из Chrome в приложение Java в Windows работает, как и ожидалось. < /li>
< /ul>
$DISPLAY
< /code>
Показывает: 0,11, значение x11 используется.$XDG_SESSION_TYPE
< /code>
не возвращает никакого значения. < /p>
У меня также есть хром, установленный отдельно для интеграции JCEF. < /p>
i Попрох от принуждения X11-режима с помощью запуска: < /p>
export XDG_SESSION_TYPE=x11
< /code>
java-приложение с обработчиком Drop: < /p>
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.*;

public class DragDropSwingApp {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Drag & Drop Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);

JTextArea textArea = new JTextArea("Drop text here...");
textArea.setFont(new Font("Arial", Font.PLAIN, 16));
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setDropTarget(new DropTarget() {
@Override
public void drop(DropTargetDropEvent dtde) {
try {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
Object data = dtde.getTransferable().getTransferData(DataFlavor.stringFlavor);
textArea.setText(data.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
});

frame.add(new JScrollPane(textArea), BorderLayout.CENTER);
frame.setVisible(true);
});
}
}
< /code>
HTML-страница для перетаскивания текста: < /p>





Drag & Drop Demo

body { font-family: Arial, sans-serif; text-align: center; margin-top: 50px; }
.draggable { padding: 10px; background-color: lightblue; width: 300px; margin: auto; cursor: grab; }



Drag this text into the Java application
Hello from the Web!


document.getElementById("dragText").addEventListener("dragstart", function(event) {
event.dataTransfer.setData("text/plain", event.target.innerText);
});



< /code>
вещи, которые я проверил Проблема, затем перетаскивание из Chrome должно работать, но это не так. должен вызвать отладку, но оно не получит событие от Chrome. Обработка между приложениями Chrome и Java на Linux. Но после установки буфера обмена Xclip на Red Hat 8 проблема все еще сохраняется.


Вопросы:
  • Почему перетаскивание не удается только из Chrome, но работает с Firefox? < /p>
    < /li>
    Есть ли способ изменить аргументы запуска Java, чтобы разрешить перетаскивание из всех приложений? Обработка типа MIME или настройки безопасности Java? и выпасть из хрома в Ubuntu (JDK-8299842), и есть ли какое-либо известное разрешение для этого?


Подробнее здесь: https://stackoverflow.com/questions/794 ... on-on-linu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»