У меня есть настольное приложение, выполненное на Java с использованием Swing. У меня есть JTextField
, в котором вводятся имена файлов с абсолютным путем.Я использую JFileChooser
, чтобы позволить пользователю выбрать файл.После того как пользователь выберет файл, в текстовом поле будет указан абсолютный путь к выбранному файлу.Мой клиент хотел иметь положение перетаскивания для выбора и вставки имени файла в текстовое поле.
Для этого я добавил следующий код:
public void setdroppedFilePath(javax.swing.JTextField jtf)
{
new FileDrop( System.out, jtf, new FileDrop.Listener()
{
public void filesDropped( java.io.File[] files)
{
if(files.length > 0)
{
String extension = "";
String filename = files[0].getAbsolutePath();
int i = filename.lastIndexOf('.');
if (i >= 0) {
extension = filename.substring(i+1);}
if (extension.compareTo("rkl")==0){
jtf.setText(files[0].getAbsolutePath());
}
}
}
});
}
Я использую вышеупомянутую функцию вмыши введите событие текстового поля.
private void JTFOriginalFileMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JTFOriginalFileMouseEntered
setdroppedFilePath(JTFOriginalFile);
Это работает нормально для моей цели.Однако я заметил, что для выполнения приложения требуется гораздо больше времени, чем обычно.Большую часть времени это работает нормально, но в некоторых случаях это занимает много времени и в конечном итоге успешно выполняется.
Почему в некоторых случаях это занимает больше времени и как я могу этого избежать?
Приложение без перетаскивания работало очень хорошо без каких-либо проблем.Я просто добавил эти две функции, чтобы добавить перетаскивание, и начинается задержка.Может быть, я ошибаюсь в своем подходе, чтобы добавить положение перетаскивания и может кто-нибудь, пожалуйста, направьте меня на какую-то ссылку, где я могу понять лучший способ добавить перетаскивание в мое приложение.