उत्तर फेंकता के लिए: JavaFX append text to TextArea throws ExceptionJavaFX पाठ संलग्न TextArea अपवाद
मैं एक धागा है कि एक निर्देशिका के आकार की गणना करता है।
मैं इसके लिए walkFileTree का उपयोग करता हूं।
कुछ जानकारी प्राप्त करने के लिए, मैं actuall फ़ाइल को textarea में जोड़ता हूं।
लेकिन जब मैं फ़ाइलों का एक बहुत (उदा।> 300) मुझे मिल गया सूत्र में "JavaFX आवेदन थ्रेड"
अपवाद java.lang.ArrayIndexOutOfBoundsException है
यहाँ कोड है:
private void startScheduledExecutorService() {
Thread dt = new Thread(new Runnable() {
public void run() {
try {
taStatus.appendText("Dateien werden ermittelt\n");
Files.walkFileTree(quellOrdner.toPath(), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
size += attrs.size();
files++;
taStatus.appendText(file.toString() + "\n");
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}, "dt");
dt.setDaemon(true);
dt.start();
}
जब मैं एक ArrayList बना सकते हैं और TextArea को यह ArrayList (एक पंक्ति में प्रत्येक प्रविष्टि) यह करने के लिए प्रत्येक फ़ाइल जोड़ सकते हैं और संलग्न है, यह काम कर रहा है।
यह थ्रेड की गति के साथ एक समस्या की तरह दिखता है?
पूर्ण अपवाद
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.javafx.text.PrismTextLayout.addTextRun(PrismTextLayout.java:755)
at com.sun.javafx.text.GlyphLayout.addTextRun(GlyphLayout.java:121)
at com.sun.javafx.text.GlyphLayout.breakRuns(GlyphLayout.java:191)
at com.sun.javafx.text.PrismTextLayout.buildRuns(PrismTextLayout.java:770)
at com.sun.javafx.text.PrismTextLayout.layout(PrismTextLayout.java:1021)
at com.sun.javafx.text.PrismTextLayout.ensureLayout(PrismTextLayout.java:223)
at com.sun.javafx.text.PrismTextLayout.getBounds(PrismTextLayout.java:246)
at javafx.scene.text.Text.getLogicalBounds(Text.java:358)
at javafx.scene.text.Text.impl_computeGeomBounds(Text.java:1168)
at javafx.scene.Node.updateGeomBounds(Node.java:3556)
at javafx.scene.Node.getGeomBounds(Node.java:3509)
at javafx.scene.Node.getLocalBounds(Node.java:3457)
at javafx.scene.Node.updateTxBounds(Node.java:3620)
at javafx.scene.Node.getTransformedBounds(Node.java:3403)
at javafx.scene.Node.updateBounds(Node.java:538)
at javafx.scene.Parent.updateBounds(Parent.java:1706)
at javafx.scene.Parent.updateBounds(Parent.java:1706)
at javafx.scene.Parent.updateBounds(Parent.java:1706)
at javafx.scene.Parent.updateBounds(Parent.java:1706)
at javafx.scene.Parent.updateBounds(Parent.java:1706)
at javafx.scene.Parent.updateBounds(Parent.java:1706)
at javafx.scene.Parent.updateBounds(Parent.java:1706)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2404)
at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Toolkit.java:314)
at com.sun.javafx.tk.Toolkit$$Lambda$178/156290868.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:313)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:340)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:525)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:505)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$400(QuantumToolkit.java:334)
at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$47/104706045.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139)
at com.sun.glass.ui.gtk.GtkApplication$$Lambda$43/1086508417.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
आपको उस लाइन से वह अपवाद मिलता है? – immibis
मेरे कोड में कहीं भी नहीं, मैंने पूर्ण अपवाद – Garog
@ user3710098 जोड़ा है यदि taStatus कुछ UI तत्व है, तो आप 'Platform.runLater (() -> taStatus.appendText()) जोड़ने की कोशिश कर सकते हैं;' – varren