JSlider& Runtime.getRuntime()。freeMemory()奇怪的问题

时间:2013-10-01 13:46:11

标签: java memory runtime jslider

我获得了PC的免费记忆,然后每隔512MB的RAM就切成一个滑块。它可以在我的电脑上运行,但对于有8 GB内存的朋友看起来like thatJSlider with 8GB: labels are unreadable

它在我的4GB ram pc(笔记本电脑)上正常工作。

这是我正在使用的代码。

    ram = new JSlider();
    ram.setMinimum(512);
    ram.setMaximum((int)Runtime.getRuntime().freeMemory()/1024);
    ram.setPaintTicks(true);
    ram.setMajorTickSpacing(512);
    ram.setValue(512);
    ram.setPreferredSize(new Dimension(750, 50));
    ram.setVisible(true);
    Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>();
    int mbs = 1024;
    while(mbs <= Runtime.getRuntime().freeMemory()/1024){       
        labelTable.put(mbs, new JLabel(Integer.toString(mbs)));
        mbs += 1024;
    }
    ram.setLabelTable(labelTable);
    ram.setPaintLabels(true);
    frame.add(ram)

1 个答案:

答案 0 :(得分:0)

最有可能的是,对于相同的空间量,8 GB的标签太多了。如果您有8 GB,则在同一可见空间中标签的数量将是4 GB的两倍。您必须根据内存量更改标签数量。

您可以使用固定数量的标签,例如10,并根据可用内存量动态计算比例。