错误:未经检查的调用JComboBox(E [])和Run out of Memory

时间:2013-02-20 14:25:00

标签: java

您好,

可能我的问题很简单,但这是我的第一个java程序,我不知道该怎么做。

我想创建一个打开图像的组合框。就是这样!

但我得到2个错误, 1.内存不足 2.未经检查调用JComboBox(E [])行''images = new JComboBox(names);''

我尝试使用-Xmx1024m命令在eclipse中修复它的第一个错误现在该程序通过eclipse平台运行但是当我尝试使用javac命令编译时我得到了错误2.最后当我从eclipse创建一个.jar文件时我跑,它不会加载310的前80个所有图像。

还有另一种方法来编写我的代码以加载所有图像而不必使用这么多内存吗?

如果有人能纠正我的代码,我将不胜感激......

非常感谢, 神灯精灵

我的代码是:

package test;  

import java.awt.*;  
import java.awt.event.*;  
import java.awt.FlowLayout;  
import java.awt.event.ItemListener;  
import java.awt.event.ItemEvent;  
import javax.swing.JFrame;  
import javax.swing.JLabel;  
import javax.swing.JComboBox;  
import javax.swing.Icon;  
import javax.swing.ImageIcon;  

public class ComboBoxTest extends JFrame {  
private JComboBox images;  
private JLabel label;  
private String names[] =  
{  "1.P 1.png",  
   "2.P -1.png",   ....so on to 300 images };  

private Icon icons[] =  
new Icon[] {    new ImageIcon( names[ 0] ),  
        new ImageIcon( names[ 1 ] ), ....so on  };  
 };  

public ComboBoxTest() {  
super( "Testing JComboBox" );  

Container c = getContentPane();  
c.setLayout( new FlowLayout() );  

images = new JComboBox( names );  
images.setMaximumRowCount( 10 );  

images.addItemListener(  
new ItemListener() {  
public void itemStateChanged( ItemEvent e ) {  
label.setIcon(  
icons[ images.getSelectedIndex() ] );  
}  
}  
);  

c.add( images );  

label = new JLabel( icons[ 0 ] );  
c.add( label);  
setVisible(true);  
setSize( 500, 500 );  
}  


public static void main( String args[] )  
{  
ComboBoxTest app = new ComboBoxTest();  

app.addWindowListener(  
new WindowAdapter() {  
public void windowClosing( WindowEvent e )  
{  
System.exit( 0 );  
}  
}  
);  
}  
}  

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话。

  1. 不要在开始时创建imageicon。在项侦听器中创建唯一的特定图像。

    images.addItemListener(  
    new ItemListener() {  
    public void itemStateChanged( ItemEvent e ) {  
    Icon ico=new ImageIcon(toString(images.getSelectedItem()));
    label.setIcon(ico);  
    }  
    }  
    );  
    
  2. 不需要这个:

    private Icon icons[] =  
    new Icon[] {    new ImageIcon( names[ 0] ),  
            new ImageIcon( names[ 1 ] ), ....so on  };  
     };