Ich habe die Kontrolle über ein kleines Stück einer Anwendung auf Eclipse gebaut, und ich habe ein Problem beim Erstellen eines DefaultCellEditor. Der Code verwendet tatsächlich eine Unterklasse von DefaultCellEditor, aber ich kann das Problem mit DefaultCellEditor neu erstellen, darum werde ich fragen, in der Hoffnung, dass es das Problem mit der tatsächlichen Klasse lösen wird. Ich habe dies sowohl mit JDK 1.5 und 1.6 versucht, und das gleiche Verhalten in beiden.App hängt Aufruf von DefaultCellEditor-Konstruktor
Das Problem tritt auf, wenn der Konstruktor für DefaultCellEditor genannt wird:
log.debug("Trying construction.");
currentCellEditor = new DefaultCellEditor(new JTextField());
log.debug("Constructed OK.");
Wenn dieser Code ausgeführt wird, vielleicht 20% der Zeit, die App hängt, und die CPU bei 100% gebunden ist - sieht aus wie es ist Irgendwo ist eine Endlosschleife, aber ich weiß nicht wo. Die erste Protokollzeile wird gedruckt, die zweite nicht.
Ich habe versucht, eine Kopie der DefaultCellEditor-Klasse zu erstellen und System.out.println-Anweisungen einzufügen, um zu sehen, ob ich herausfinden kann, wo das Problem auftritt. Während der Zeit, in der der Code korrekt ausgeführt wird, werden alle meine Debug-Anweisungen ausgedruckt, aber wenn es nicht korrekt ausgeführt wird, werden keine der Anweisungen ausgedruckt, fast so, als ob der Hang vor dem Aufruf des Konstruktors aufgetreten wäre. Irgendwelche Ideen, was passieren könnte?
Sie könnten Thread Dump (Control-Break unter Windows) tun und sehen, wo Ihr Thread läuft oder wartet. –
Wie immer, stellen Sie sicher, dass Sie im AWT EDT laufen. –