Devilmarkus Geschrieben 2. Dezember 2009 Geschrieben 2. Dezember 2009 (bearbeitet) Hallo, ich habe ein Problem mit einem eigenen Dialog. Dieser soll sich öffnen, wenn in einer ZIP-Datei mehr als 1 Datei enthalten sind. Dafür habe ich 2 JComboBoxen welche identisch sind. Im Dialog soll nun die eine JComboBox angezeigt werden, und man soll eine Datei daraus auswählen. Daraufhin wird die zweite JComboBox auf den Index der ersten gesetzt. (Zweite hat einen ActionListener, die funktioniert enwandfrei) hier der Code für den Dialog: public void askFile(){ Object[] message = {chooser, "Ok", "Cancel"}; int choice = JOptionPane.showOptionDialog(new JFrame(), "Please choose", "Zipped archive", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, message, null); if (choice == 1) cbZipChooser.setSelectedIndex(chooser.getSelectedIndex()); } In einem anderen Programm von mir funktioniert dieses tadellos. Nur hier nicht... Schliesse ich den Dialog ([X]) erhalte ich folgende Fehlermeldung: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javax.swing.BufferStrategyPaintManager.flushAccumulatedRegion(BufferStrategyPaintManager.java:398) at javax.swing.BufferStrategyPaintManager.endPaint(BufferStrategyPaintManager.java:362) at javax.swing.RepaintManager.endPaint(RepaintManager.java:1281) at javax.swing.JComponent._paintImmediately(JComponent.java:5076) at javax.swing.JComponent.paintImmediately(JComponent.java:4880) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714) at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Hat hier jemand eine Idee, warum das passiert? Edit: Übrigens erscheint dieser BUG nur wenn die Anwendung gestartet wird. Lade ich im Nachhinein eine ZIP-Datei, ist alles so, wie es sein soll. Bearbeitet 2. Dezember 2009 von Devilmarkus Zitieren
Dragon8 Geschrieben 2. Dezember 2009 Geschrieben 2. Dezember 2009 Hi, schau mal ob folgender Java Bug vielleicht auf dich zutrifft: Bug ID: 6668436 Painting a component to an off-screen image should not affect the double buffer Ich habe den selben Fehler nämlich zurzeit bei mir auch, und bin darüber aufden Java Bug gestoßen und bei trifft es zu, was in dem Bug Report beschrieben ist...leider wird dort kein Workaround genannt. Zitieren
perdian Geschrieben 3. Dezember 2009 Geschrieben 3. Dezember 2009 Wird askFile innerhalb des Event Dispatcher Threads oder eines anderen Threads aufgerufen? Wenn letzteres: Ersteres ausprobieren. Zitieren
Devilmarkus Geschrieben 5. Dezember 2009 Autor Geschrieben 5. Dezember 2009 So funzt es: public void askFile(){ try { SwingUtilities.invokeLater(new Runnable() { public void run() { Object[] message = {chooser, "Ok", "Cancel"}; int choice = JOptionPane.showOptionDialog(new Frame(), "Please choose", "Zipped archive", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, message, null); if (choice == 1) cbZipChooser.setSelectedIndex(chooser.getSelectedIndex()); } }); } catch (Exception e) { e.printStackTrace(); } } Was'n blöd :upps:upps:upps:old Zitieren
Devilmarkus Geschrieben 5. Dezember 2009 Autor Geschrieben 5. Dezember 2009 So funzt es: public void askFile(){ try { SwingUtilities.invokeLater(new Runnable() { public void run() { Object[] message = {chooser, "Ok", "Cancel"}; int choice = JOptionPane.showOptionDialog(new Frame(), "Please choose", "Zipped archive", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, message, null); if (choice == 1) cbZipChooser.setSelectedIndex(chooser.getSelectedIndex()); } }); } catch (Exception e) { e.printStackTrace(); } } Was'n blöd :upps:upps:upps:old Edit: wer es sich antun möchte: Ich habe ein kleines Video aufgenommen, welches gleichzeitig ein Technik-Test der emulierten Hardware (CRTC, Grafik, Sound) demonstriert: Erstellt von Camtasia Studio 6 Wie man sehen kann wird also die Hardware inzwischen sehr gut emuliert (Nicht wundern wegen der sehr schnellen emulierten Floppy, ich habe den Laufwerks-Turbo aktiv gehabt) 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.