My Java (Java 21) имеет часть графического интерфейса, который позволяет перетаскивать изображение, найденное в Google в веб-браузере в приложение, вкусный вкус URL-адрес Сообщение также регистрируется. Ничто даже не зарегистрировано. Основываясь на предложении VGR I теперь регистрируется, если есть исключение, а также я регистрируюсь, когда сначала вводим метод DROP. EM> Метод Таким образом, кажется, что macOS предотвращает падение перетаскивания еще до того, как он добрался до моего кода . от Finder вместо
Что вызывает разницу? em> < /p>
01/2025 12.52.09:GMT:ArtworkDropTarget:drop:SEVERE: Cannot invoke "String.length()" because "spec" is null
java.awt.dnd.InvalidDnDOperationException: Cannot invoke "String.length()" because "spec" is null
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer.getTransferData(SunDropTargetContextPeer.java:274)
at java.desktop/sun.awt.datatransfer.TransferableProxy.getTransferData(TransferableProxy.java:73)
at java.desktop/java.awt.dnd.DropTargetContext$TransferableProxy.getTransferData(DropTargetContext.java:387)
at com.jthink.songkong.ui.startdialog.editsongs.ArtworkDropTarget.drop(ArtworkDropTarget.java:109)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:548)
at java.desktop/sun.lwawt.macosx.CDropTargetContextPeer.processDropMessage(CDropTargetContextPeer.java:129)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:864)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:788)
at java.desktop/sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4649)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4511)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
My Java (Java 21) имеет часть графического интерфейса, который позволяет перетаскивать изображение, найденное в Google в веб-браузере в приложение, вкусный вкус URL-адрес Сообщение также регистрируется. Ничто даже не зарегистрировано. Основываясь на предложении VGR I теперь регистрируется, если есть исключение, а также я регистрируюсь, когда сначала вводим метод DROP. EM> Метод [b] Таким образом, кажется, что macOS предотвращает падение перетаскивания еще до того, как он добрался до моего кода [/b]. от Finder вместо Что вызывает разницу? em> < /p> [code] package com.jthink.songkong.ui.startdialog.editsongs;
public class ArtworkDropTarget extends DropTarget { private static CoverImage coverImage; private JLabel displayArtwork;
public static DataFlavor uriListFlavor; //This is used by Linux for loading files public static DataFlavor imageFlavor; //This is used by Firefox, when drag single image file public static DataFlavor urlFlavour; //This is used by Firefox, when drag single image file public static DataFlavor pictImageFlavor; //This is used by OSX for iTunes public static DataFlavor imageIconDataFlavor; //When dragging from existingArtwork static { try { uriListFlavor = new DataFlavor("text/uri-list;class=java.lang.String"); urlFlavour = new DataFlavor("application/x-java-url;class=java.net.URL"); imageFlavor = new DataFlavor("image/x-java-image;class=java.awt.Image"); pictImageFlavor = new DataFlavor("image/x-pict;class=java.io.InputStream"); imageIconDataFlavor = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=\""+javax.swing.Icon.class.getName() + "\""); } catch (ClassNotFoundException cne) { throw new RuntimeException("unable to create uri-list flavor in drop target:" + cne.getMessage()); } }
/** * TODO do we have to convert to JPG, cant we keep as PNG * @param image */ private void setExistingArtwork(BufferedImage image) { try { byte[] imageData = writeCompressedJpegImageToByteArray(image, 1.0f); coverImage = ImageCache.saveNewCoverImage(image, imageData, "internet", com.jthink.songlayer.CoverImage.createKeyFromData(imageData), MIN_IMAGE_SIZE, UserOption.ARTWORK_MAX_SIZE.getIntValue() ); SongCache.saveImagesForReport(coverImage, null); createNewArtworkImage(image); } catch (IOException ex) { MainWindow.logger.log(Level.SEVERE, ex.getMessage(), ex); } }
/** * Write Compressed Jpeg, use minimum compression of 1f for best quality * * @param bi * @param compressionLevel * @return * @throws IOException */ private static byte[] writeCompressedJpegImageToByteArray(BufferedImage bi, float compressionLevel) throws IOException { ImageWriter imageWriter = ImageIO.getImageWritersByFormatName( "jpg").next(); ImageWriteParam writeParams = imageWriter.getDefaultWriteParam(); writeParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); writeParams.setCompressionQuality(compressionLevel);
final ByteArrayOutputStream output = new ByteArrayOutputStream(); imageWriter.setOutput( new MemoryCacheImageOutputStream(output)); IIOImage outputImage = new IIOImage(bi, null, null); imageWriter.write(null, outputImage, writeParams); imageWriter.dispose();
output.flush(); final byte[] imageData = output.toByteArray(); return imageData; }
/** * Update new artwork label with version of this image * * @param image */ private void createNewArtworkImage(BufferedImage image) { BufferedImage ret = new BufferedImage(ARTWORK_SIZE, ARTWORK_SIZE, BufferedImage.TYPE_INT_RGB); ret.getGraphics().drawImage(image, 0, 0, ARTWORK_SIZE, ARTWORK_SIZE, null); ImageIcon ii = new ImageIcon(ret); displayArtwork.setIcon(ii); displayArtwork.setText(image.getWidth() + " x " + image.getHeight()); ArtworkFont.formatArtworkLabel(displayArtwork); }
public static CoverImage getCoverImage() { return coverImage; } } [/code] [b]Обновление[/b] Удалена синхронизированная ключевая фраза, предложенная VGR, теперь она попадает в режим удаления, но выдает исключение [code] 01/2025 12.52.09:GMT:ArtworkDropTarget:drop:SEVERE: Cannot invoke "String.length()" because "spec" is null java.awt.dnd.InvalidDnDOperationException: Cannot invoke "String.length()" because "spec" is null at java.desktop/sun.awt.dnd.SunDropTargetContextPeer.getTransferData(SunDropTargetContextPeer.java:274) at java.desktop/sun.awt.datatransfer.TransferableProxy.getTransferData(TransferableProxy.java:73) at java.desktop/java.awt.dnd.DropTargetContext$TransferableProxy.getTransferData(DropTargetContext.java:387) at com.jthink.songkong.ui.startdialog.editsongs.ArtworkDropTarget.drop(ArtworkDropTarget.java:109) at java.desktop/sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:548) at java.desktop/sun.lwawt.macosx.CDropTargetContextPeer.processDropMessage(CDropTargetContextPeer.java:129) at java.desktop/sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:864) at java.desktop/sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:788) at java.desktop/sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4861) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4649) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4511) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [/code] Возможная связанная проблема – https://bugs.openjdk.org/browse/JDK-4358053
My Java (Java 21) имеет часть графического интерфейса, который позволяет перетаскивать изображение, найденное в Google в веб-браузере в приложение, вкусный вкус URL-адрес Сообщение также регистрируется. Ничто даже не зарегистрировано. Основываясь на...
My Java (Java 21) имеет часть графического интерфейса, который позволяет перетаскивать изображение, найденное в Google в веб-браузере в приложение, вкусный вкус URL-адрес Сообщение также регистрируется. Ничто даже не зарегистрировано. Основываясь на...
My Java (Java 21) имеет часть графического интерфейса, который позволяет перетаскивать изображение, найденное в Google в веб-браузере в приложение, вкусный вкус URL-адрес Сообщение также регистрируется. Ничто даже не зарегистрировано. Основываясь на...
My Java (Java 21) имеет часть графического интерфейса, который позволяет перетаскивать изображение, найденное в Google в веб-браузере в приложение, вкусный вкус URL-адрес Сообщение также регистрируется. Ничто даже не зарегистрировано. Основываясь на...
Мое приложение Java (Java 21) имеет часть графического интерфейса, который позволяет вам перетаскивать изображение, найденное в Google в веб-браузере, в приложение, вкусный вкус URL-адрес Сафари) и ничто даже не зарегистрировано. Основываясь на...