Kagee Skrevet 17. juli 2009 Del Skrevet 17. juli 2009 Jeg skriver et program som skal utføre noe arbeid på x antall filer, og tenkte at et Drop-interface i dette tilfellet ville være enklere enn en filvelger. (vel, egentlig fordi jeg selv heller ville ha det siste) Jeg bruker en JList som mål for filene som skal droppes, men da jeg fikk noen til å teste programmet på Windows, fungerte det ikke som forventet. Etter en stund kom jeg fram til at dette var fordi Window og Linux rapporterte forskjellige tilgjengelige DataFlavors selv om jeg droppet filer fra standard filbehandler i begge systemer. Windows rapporterer kun application/x-java-file-list når jeg dropper en elller flere filer på listen, mens i Ubuntu 9.04 rapporterer disse. text/uri-list Unicode String text/plain Plain Text x-special/gnome-icon-list Det som irriterer meg veldig, er at de ikke har noen fellesnevner - hadde de begge f.eks rapportert en uri-list, kunne jeg brukt denne. Slik det ser ut nå må jeg skrive en kode for Windows (x-java-file-list tilgjenglig) og en for Linux (sistnevnte ikke tilgjengelig). Er dette noe som bestemmes av Java-implementasjonen, eller av systemet/filbehandleren? Er det noen måte å lure/ direkte konvertere det ene til det andre på? (en text/uri-list må vel ikke nødvendigvis være en fil/filer) Hvis jeg prøver å droppe på noe annet, vil jeg da får andre DataFlavors? Jeg har erfaring fra PHP(selvlært) og C++ (skolelært), og jeg var imponert over hvor lett det var å sette seg inn i GUI-programmering i Java - det kommer garantert til å bli en av mine yndlingsspråk. Lenke til kommentar
pgdx Skrevet 20. juli 2009 Del Skrevet 20. juli 2009 Er dette noe som bestemmes av Java-implementasjonen, eller av systemet/filbehandleren? Er det noen måte å lure/ direkte konvertere det ene til det andre på? (en text/uri-list må vel ikke nødvendigvis være en fil/filer) Jeg vet ganske lite om dette, men det kan virke som om dette er et sted der du trenger en Adapter eller Abstract factory. Hvis du lager et DataFlavorToFile-grensesnitt, så kan du ha to (eller flere) forskjellige implementasjoner, e.g. DataFlavorToFileWindows og DataFlavorToFileGtk. public interface DataFlavorToFile { File convert(DataFlavor df); } public class DataFlavorToFileGtk implements DataFlavorToFile { public File convert(DataFlavor df) { return new File(df.getWhatever()); } } public class DataFlavorToFileFactory { public static DataFlavorToFile createAdapter() { if (System.getProperty("os") == "...") { return new DataFlavorToFileGtk(); } else { // ... } } } [...] jeg var imponert over hvor lett det var å sette seg inn i GUI-programmering i Java - det kommer garantert til å bli en av mine yndlingsspråk. Bare fordi det er lett å sette seg inn i betyr ikke at det kommer til å forbli et yndlingsspråk ... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå