如何检查ComboBox中选择的项目并将该项目用作另一种方法的参数?

时间:2014-03-01 19:46:59

标签: java swing methods parameters combobox

我正在创建一个程序,允许用户输入数据,然后单击按钮查看所述数据。在第一帧我希望用户从ComboBox中选择一个项目,当他们点击一个按钮时,它从ComboBox中获取所选项目并将其作为另一个方法的参数输入,该方法将从文件中调出数据(此方法不是还没完成。

我到目前为止的代码如下:

import java.awt.Container;
import java.awt.EventQueue;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SpringLayout;


public class Main implements ActionListener{

static JButton ViewData = new JButton("View Data");
static JButton AddItem = new JButton("Add Item");
String Item = null;

public static void main(String[]args){

     javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    new Main();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

}

public Main()  throws IOException{

    //Populating ComboBox
    String FilePath = "C:/Users/Harry/AS Computing/CWTreasurers/src/ItemList";

    BufferedReader input = new BufferedReader(new FileReader(FilePath));
    ArrayList<String> strings = new ArrayList<String>();
    try {
      String line = null;
      while (( line = input.readLine()) != null){
        strings.add(line);
      }//End While
    }//End Try

    catch (FileNotFoundException e) {
        System.err.println("Error, file " + FilePath + " didn't exist.");
    }//End catch
    finally {
        input.close();
    }//end Finally

    String[] lineArray = strings.toArray(new String[]{});

    JComboBox ChooseItems = new JComboBox(lineArray);

    //End populating ComboBox

    JFrame frame = new JFrame("CharityWeekTreasury");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
    //Sets Default properties of the window

    Container ContentPane = frame.getContentPane();
    SpringLayout layout = new SpringLayout();
    ContentPane.setLayout(layout);
    //Defines the container for all objects and the layout

    ContentPane.add(ChooseItems);
    ContentPane.add(ViewData);
    ContentPane.add(AddItem);
    ViewData.addActionListener(this);
    AddItem.addActionListener(this);
    //Adds Objects to window

    layout.putConstraint(SpringLayout.WEST,ChooseItems,5,SpringLayout.WEST,ContentPane);
    layout.putConstraint(SpringLayout.NORTH,ChooseItems,5,SpringLayout.NORTH,ContentPane);

    layout.putConstraint(SpringLayout.WEST,ViewData,5,SpringLayout.EAST,ChooseItems);
    layout.putConstraint(SpringLayout.NORTH,ViewData,5,SpringLayout.NORTH,ContentPane);

    layout.putConstraint(SpringLayout.WEST,AddItem,5,SpringLayout.EAST,ViewData);
    layout.putConstraint(SpringLayout.NORTH,AddItem,5,SpringLayout.NORTH,ContentPane);

    layout.putConstraint(SpringLayout.EAST,ContentPane,5,SpringLayout.EAST,AddItem);
    layout.putConstraint(SpringLayout.SOUTH,ContentPane,5,SpringLayout.SOUTH,ChooseItems);
    //Sets Positioning of objects relative to each other


    frame.pack();
    frame.setVisible(true);
    //Makes frame visible
}//End Window


public void actionPerformed(ActionEvent e) {

    JButton b = (JButton)e.getSource();
    if(b.equals(ViewData)){
        Item = ChooseItems.getSelectedItem();
        ViewData view = new ViewData(Item);
    }else if(b.equals(AddItem)){
        new AddItem();
    }

}

}

ViewData既是一个按钮又是项目中另一个类的名称,主要错误就是该行

Item = ChooseItems.getSelectedItem();

似乎不起作用,我认为这是由于声明了ChooseItems的位置,这意味着没有ChooseItems来获取所选项目。

非常感谢任何帮助。感谢。

0 个答案:

没有答案