Bonjour à tous,
En suivant les tutos Sun javafx, j'ai lancé l'appli UIControls.fx (un petit Stage contenant divers contrôles).
Tout fonctionne très bien sauf que le processeur est occupé à 70% puis très vite 100%. Cette petite scène d'une dizaine de boutons finit sa course à 250Mo :aie:
On peut trouver le code directement chez Sun
http://java.sun.com/javafx/1/tutoria.../UIControls.fx
Voilà le code pour ceux qui préfèrent l'indentation du forum :
En modifiant le code, on s'aperçoit que ProgressBar et ProgressIndicator avec l'attribut progress à -1 provoquent le "OutOfMemory".Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 import javafx.scene.Scene; import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.ProgressBar; import javafx.scene.control.ProgressIndicator; import javafx.scene.control.RadioButton; import javafx.scene.control.Slider; import javafx.scene.control.TextBox; import javafx.scene.control.ToggleButton; import javafx.scene.control.ToggleGroup; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; import javafx.animation.Timeline; import javafx.scene.control.Hyperlink; var opacityLevel: Number; Timeline { repeatCount: Timeline.INDEFINITE autoReverse: false keyFrames: [ at (0s) {opacityLevel => 0.2}, at (2s) {opacityLevel => 1.0} at (4s) {opacityLevel => 0.2} ] }.play(); var group1 = ToggleGroup{}; var group2 = ToggleGroup{}; def slider = Slider { max: 100 } Stage { title: "Controls (JavaFX sample)" scene: Scene { width: 510 height: 400 content: VBox {translateX: 10 translateY: 10 spacing: 20 content: [ HBox {spacing: 5 content: [ Label {text: "RadioButton:"} VBox{ content:[ RadioButton { toggleGroup: group2 text: "First" selected: true } RadioButton { toggleGroup: group2 text: "Second" } ] } Label {text: "TextBox:"} TextBox {} ] } HBox {spacing: 5 content: [ Label {text: "ToggleButton:"} ToggleButton { toggleGroup: group1 text: "Yes" selected: true } ToggleButton { toggleGroup: group1 text: "No" } ToggleButton { toggleGroup: group1 text: "I don't know" opacity: bind opacityLevel } ] } HBox {spacing: 5 content: [ Label {text: "CheckBox:"} CheckBox { text: "Normal" } CheckBox { text: "Checked" selected: true } CheckBox { allowTriState: true text: "Undefined" defined: false } ] } HBox {spacing: 5 content: [ Label {text: "Slider:"} slider, Label {text: "Hyperlink:"} Hyperlink { text: "javafx.com"} ] } HBox {spacing: 5 content: [ Label {text: "ProgressBar:"} VBox{ content: [ HBox { content: [ ProgressBar { progress: bind slider.value / slider.max }, ProgressIndicator { progress: bind slider.value / slider.max } ] } HBox { content: [ ProgressBar { progress: -1 }, ProgressIndicator { progress: -1 } ] } ] } ] } ]//content of VBox }//VBox }//Scene }//Stage
La stack cache le outofmemory vraissemblable (caché derrière un NullPointerException):
Citation:
Unexpected exception caught in MasterTimer.timePulse():
java.lang.NullPointerException
at com.sun.scenario.effect.impl.sw.sse.SSEBoxShadowPeer.filter(SSEBoxShadowPeer.java:94)
at com.sun.scenario.effect.impl.state.LinearConvolveKernel.filterImageDatas(LinearConvolveKernel.java:351)
at com.sun.scenario.effect.BoxShadow.filterImageDatas(BoxShadow.java:393)
at com.sun.scenario.effect.FilterEffect.filter(FilterEffect.java:94)
at com.sun.scenario.effect.Offset.filter(Offset.java:158)
at com.sun.scenario.effect.FilterEffect.filter(FilterEffect.java:86)
at com.sun.scenario.effect.DelegateEffect.filter(DelegateEffect.java:65)
at com.sun.scenario.effect.impl.j2d.J2DEffectHelper.render(J2DEffectHelper.java:79)
at com.sun.scenario.scenegraph.EffectFilter.render(EffectFilter.java:25)
at com.sun.scenario.scenegraph.SGNode.renderEffect(SGNode.java:1025)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:840)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:822)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:822)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:822)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:822)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.JSGPanel.paintComponent(JSGPanel.java:245)
at javax.swing.JComponent.paint(JComponent.java:1006)
at javax.swing.JComponent.paintChildren(JComponent.java:843)
at javax.swing.JComponent.paint(JComponent.java:1015)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:559)
at javax.swing.JComponent.paintChildren(JComponent.java:843)
at javax.swing.JComponent.paint(JComponent.java:1015)
at com.sun.javafx.tk.swing.WindowImpl$2$1.paint(WindowImpl.java:152)
at javax.swing.JComponent._paintImmediately(JComponent.java:4890)
at javax.swing.JComponent.paintImmediately(JComponent.java:4676)
at javax.swing.JComponent.paintImmediately(JComponent.java:4688)
at com.sun.scenario.scenegraph.JSGPanel.repaintDirtyRegions(JSGPanel.java:334)
at com.sun.scenario.scenegraph.JSGPanelRepainter.repaintAll(JSGPanelRepainter.java:122)
at com.sun.scenario.scenegraph.JSGPanelRepainter$FrameDisplay.run(JSGPanelRepainter.java:134)
at com.sun.scenario.animation.AbstractMasterTimer.timePulseImpl(AbstractMasterTimer.java:397)
at com.sun.scenario.animation.AbstractMasterTimer$MainLoop.run(AbstractMasterTimer.java:274)
at com.sun.embeddedswing.EmbeddedEventQueue.doPulse(EmbeddedEventQueue.java:562)
at com.sun.embeddedswing.EmbeddedEventQueue.access$000(EmbeddedEventQueue.java:74)
at com.sun.embeddedswing.EmbeddedEventQueue$2.run(EmbeddedEventQueue.java:465)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at com.sun.embeddedswing.EmbeddedEventQueue.dispatchEvent(EmbeddedEventQueue.java:440)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)