JComboBox不允许我用数组启动它

时间:2011-03-13 01:18:47

标签: java swing

import java.awt.event.*;
import javax.swing.*;
public class PlannerMain {
JFrame frame;
JButton makeMap;
JPanel panel;
JLabel outcome;
JComboBox listOfWindTurbines;
int[] windTurbineSpace = new int[10];
JTextField lengthOfRoom, widthOfRoom, widthObjectNeeds, lengthObjectNeeds;
int lengthOfRoomInt, widthOfRoomInt, widthObjectNeedsInt, lengthObjectNeedsInt, largerObjectMeasurement, numberOfItems, numberOfItemsShort;
public static void main(String[] args){
PlannerMain p = new PlannerMain();

}

public PlannerMain(){

    windTurbineSpace[0] = 1;
    frame = new JFrame("Minecraft Land Planner");
    outcome = new JLabel();
    panel = new JPanel();
    makeMap = new JButton("Make Map");
    lengthOfRoom = new JTextField("Length of Room");
    widthOfRoom = new JTextField("Width of Room");
    widthObjectNeeds = new JTextField("Width Object Needs");
    lengthObjectNeeds = new JTextField("Length Object Needs");
    listOfWindTurbines = new JComboBox(windTurbineSpace);
    makeMap.addActionListener(new makeMapListener());
    frame.setSize(580,550);
    frame.add(panel);
    panel.add(makeMap);
    panel.add(lengthOfRoom);
    panel.add(widthOfRoom);
    panel.add(lengthObjectNeeds);
    panel.add(widthObjectNeeds);
    panel.add(listOfWindTurbines);
    panel.add(outcome);
    frame.setVisible(true);


}

class makeMapListener implements ActionListener{

    public void actionPerformed(ActionEvent e) {

        lengthOfRoomInt = Integer.parseInt(lengthOfRoom.getText());
        widthOfRoomInt = Integer.parseInt(widthOfRoom.getText());
        lengthObjectNeedsInt = Integer.parseInt(lengthObjectNeeds.getText());
        widthObjectNeedsInt = Integer.parseInt(widthObjectNeeds.getText());
        if(lengthObjectNeedsInt<=widthObjectNeedsInt){

            largerObjectMeasurement = widthObjectNeedsInt;

        }
        if(widthObjectNeedsInt<=lengthObjectNeedsInt){
            largerObjectMeasurement = lengthObjectNeedsInt;

        }
        numberOfItems = (lengthOfRoomInt/lengthObjectNeedsInt)*(widthOfRoomInt/widthObjectNeedsInt);
        outcome.setText(String.valueOf(numberOfItems));
        lengthOfRoom.setSize(30, 20);
        widthOfRoom.setSize(30, 20);
        widthObjectNeeds.setSize(30, 10);
        lengthObjectNeeds.setSize(100, 20);

        }

    }
}

它在第28行给我这个错误。

3 个答案:

答案 0 :(得分:2)

使用包装类

Integer[] windTurbineSpace = new Integer[10];

答案 1 :(得分:0)

您想要使用的JComboBox的构造函数需要对象数组而不是基本类型。

变化:

int[] windTurbineSpace = new int[10];

为:

Integer[] windTurbineSpace = new Integer[10];

答案 2 :(得分:0)

JComboBox在构造函数中使用Object数组。 int是原语,因此您无法使用它。

您需要使用Integer包装类:

Integer[] windTurbineSpace = new Integer[10];