2013-12-11 33 views
0

在ChoiceBox中是否有任何可添加4000件物品的posibilty。 我的代碼工作正常,但出現內存不足錯誤。JavaFx如何在ChoiceBox中添加4000件物品

我的代碼是:

listItemsDevices.setItems(FXCollections.observableArrayList(resultSet)); 
listItemsDevices.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 
@Override 
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
indexOfSumarnoTehtniceDropdown =listItemsDevices.getSelectionModel().getSelectedIndex(); 
System.out.println("INDEX "+indexOfSumarnoTehtniceDropdown); 
} 
}); 

我FXML是:

<ChoiceBox fx:id="listItemsDevices"> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
     <String fx:value="Item 1" /> 
     <String fx:value="Item 2" /> 
     <String fx:value="Item 3" /> 
     </FXCollections> 
    </items> 
</ChoiceBox> 

我得到錯誤的最重要的原因是:java.lang.OutOfMemoryError:Java堆空間。任何想法如何解決這個問題?

 Exception in Application start method java.lang.OutOfMemoryError: Java heap space 
at java.util.jar.Manifest.read(Unknown Source) 
at java.util.jar.Manifest.<init>(Unknown Source) 
at java.util.jar.JarFile.getManifestFromReference(Unknown Source) 
at java.util.jar.JarFile.getManifest(Unknown Source) 
at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source) 
at java.net.URLClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.access$100(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at javafx.scene.Scene$MouseHandler.updateCursorFrame(Unknown Source) 
at javafx.scene.Scene$ScenePulseListener.pulse(Unknown Source) 
at com.sun.javafx.tk.Toolkit.firePulse(Unknown Source) 
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source) 
at com.sun.javafx.tk.quantum.QuantumToolkit$9.run(Unknown Source) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source) 
at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
    Exception in thread "main" java.lang.RuntimeException: Application launch error 
at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
    Caused by: java.lang.OutOfMemoryError: Java heap space 
at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source) 
at java.util.jar.Manifest$FastInputStream.<init>(Unknown Source) 
at java.util.jar.Manifest.read(Unknown Source) 
at java.util.jar.Manifest.<init>(Unknown Source) 
at java.util.jar.JarFile.getManifestFromReference(Unknown Source) 
at java.util.jar.JarFile.getManifest(Unknown Source) 
at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source) 
at java.net.URLClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.access$100(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at com.sun.javafx.application.PlatformImpl.tkExit(Unknown Source) 
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source) 
at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source) 
... 2 more 

回答

1

首先,你可以嘗試增加堆大小:)

但我的建議是像Android這樣用列表視圖做它用一個懶惰的顯示策略。只加載這些可見的項目。這意味着,使用固定數量的CheckBox創建一個ScrollPane(如果您的項目較少,則更少)。監聽滾動事件。加載集合的項目並將其連接到CheckBoxes。通常情況下,您可以通過在當前子列表之前和之後加載固定數量的項目來提高用戶體驗,從而實現更快速的滾動。

+0

如何增加堆大小或者是這個笑話? :D – wanttobeprofessional

+0

@RobertP,你可以指定開始和最大堆大小。請看看參數-Xms和-Xmx:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html – Vertex

+0

Thanky你的頂點! – wanttobeprofessional