dommes89 Geschrieben 27. Februar 2009 Geschrieben 27. Februar 2009 Hallo.. und zwar habe ich mir einen JFileChooser angelegt der eine ausgewählte Datei an einen anderen Ort kopiert und diese (Eine Grafik) im JTextPane anzeigen lässt... Problem: Ich wähle eine Datei aus, er kopiert diese an den bestimmten Ort, und fügt diese dann in das JTextPane ein. Nun wähle ich eine weitere Datei aus, er kopiert diese an den bestimmten Ort und fügt danach die 1. Datei wieder in das JTextPane ein... und nicht die als zweites ausgewählte ?!?! so als wäre sie irgendwo zwischengespeichert... ich finde aber nirgends wo dies der Fall sein könnte... Hier mal der Code.. private JFrame getJFrame1() throws IOException { jFileChooser1 = new JFileChooser(); int status = jFileChooser1.showOpenDialog(null); if (status == JFileChooser.APPROVE_OPTION) { File selectedFile = jFileChooser1.getSelectedFile(); imageImport(selectedFile.getPath()); } else if (status == JFileChooser.CANCEL_OPTION) { System.out.println("canceled"); } insertImageIntoText(); return jFrame1; } private void imageImport(String gifFile) throws IOException{ File fromFile = new File(gifFile); File toFile = new File(image_path+System.getProperty("user.name")+".gif"); FileInputStream inFile = new FileInputStream(fromFile); FileOutputStream outFile = new FileOutputStream(toFile); FileChannel inChannel = inFile.getChannel(); FileChannel outChannel = outFile.getChannel(); int bytesWritten = 0; long byteCount = inChannel.size(); while (bytesWritten < byteCount) { bytesWritten += inChannel.transferTo(bytesWritten, byteCount - bytesWritten, outChannel); } inFile.close(); outFile.close(); } private void insertImageIntoText() throws IOException{ image = new ImageIcon(image_path+System.getProperty("user.name")+".gif"); jTextPane1.insertIcon(image); } Schauts euch bitte mal an und ich hoffe ihr könnt mir dann helfen =/ Gruß Zitieren
dommes89 Geschrieben 27. Februar 2009 Autor Geschrieben 27. Februar 2009 Okay ich habe rausgefunden, dass das gar nicht an dem code ansich liegt... Ich hab jetzt mal was ganz einfaches gebaut: einen Button der beim klick das macht: jTextPane1.insertIcon(new ImageIcon(image_path+System.getProperty("user.name")+".gif")); ich klicke ein paar mal drauf, dann geh ich in das verzeichnis, lösche die datei, nehem eine andere Grafik nenne sie genauso wie die eben und drücke wieder paar mal drauf, jedoch fügt er immer noch die alte grafik ein... WIESO ist das so? Und wie kann ich das UMGEHEN? Hoffe einer hat ne Idee... gruß Zitieren
perdian Geschrieben 27. Februar 2009 Geschrieben 27. Februar 2009 Da ich keine besonders große Lust habe durch deinen Code durchzusteigen: Erstell dochmal einen einfachen Testcase, der das von dir beschriebene Verhalten (und nicht mehr!) zeigt. Vielleicht fällt dir in dem Verlauf schon die Lösung ein, wenn nicht ist es für jemand anders bedeutend einfacher nachzuvollziehen worum es eigentlich geht. Zitieren
dommes89 Geschrieben 27. Februar 2009 Autor Geschrieben 27. Februar 2009 wie gesagt, habe ich ja jetzt schon gemacht.. habe das ganze drum herum weggelasse und nur einen button erstellt der ein image einfügt.. Jedoch wenn ich es zur Laufzeit des Programms ändere dann fügt er trotzdem immer noch das bereits eingefügte ein und nicht das neue überschriebene Icon... =/ Gibts es nicht so etwas wie z.b. ein refresh des icons bevor das programm es einfügt? Gruß Zitieren
perdian Geschrieben 27. Februar 2009 Geschrieben 27. Februar 2009 Wenn du willst, dass sich jemand deines Problemes annimmt kann ich mich nur wiederholen: Erstell einen einfachen Testcase! Zitieren
dommes89 Geschrieben 27. Februar 2009 Autor Geschrieben 27. Februar 2009 Ahso okay: Bedingungen: Eine Grafik c:\x.gif existiert 1. Ausführen des Programms -> Man sieht ein Fenster mit einem JButton und einem JTextPane 2. Klick auf den Button -> Es wird das Icon c:\x.gif in JTextPane eingefügt 3. Ich ersetze in c:\ das Icon x.gif mit einem anderen x.gif 4. Klick auf den Button -> Es wird das Icon eingefügt das vorher schon eingefügt wurde -> Erwartet wurde, dass nun ein anderes Icon einfügt wird, da es ja geändert wurde 5. Neustart des Programms 6. Klick auf den Button -> Nun wird das gewünschte Icon eingefügt Wie gesagt: Warum? und Wie kann man das umgehen? Gruß Zitieren
perdian Geschrieben 27. Februar 2009 Geschrieben 27. Februar 2009 Du hast noch immer nicht verstanden was ein Testcase ist. Ich will in meiner Umgebung nur auf einen Knopf drücken und das Programm läuft. Hierzu gibt es zwei Möglichkeiten: Du erstellst eine Klasse mit einer main-Methode, die genau das macht, was du hier beschreibst oder aber du erstellst einen JUnit Testcase. Ohne das gibt es - zumindest von mir - auch keine Lösung. Eigentlich ist es doch ganz einfach: Du willst, dass ich (oder irgendjemand sonst hier aus dem Forum) dir helfe. Ich habe aber keine Lust mich stundenlang mit einem Setup zu befassen, bis ich dein Problem reproduziert bekomme - denn ohne reproduzierbares Problem keine Problemlösung. Solange du also nicht bereit bist genau diesen Initialaufwand zu leisten behaupt ich, dass du noch eine ganze Weile auf die Lösung warten wirst. Zitieren
d.uNd.eE Geschrieben 6. März 2009 Geschrieben 6. März 2009 Versuch doch mal das Objekt, dass das Bild enthält (in deinem Falle der Button) erst zu entfernen und dann mit dem neuen Bild neu anzulegen. Wäre keine Lösung aber nen Workaround Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.