Java 如何选中组合框中选定的项,并将该项用作另一个方法的参数?
我正在创建一个程序,允许用户输入数据,然后单击按钮查看所述数据。在第一帧中,我希望用户从组合框中选择一个项目,当他们单击按钮时,它从组合框中获取所选项目,并将其作为另一个方法的参数输入,该方法将从文件中调出数据。此方法尚未完成 我目前掌握的守则如下:Java 如何选中组合框中选定的项,并将该项用作另一个方法的参数?,java,swing,methods,parameters,combobox,Java,Swing,Methods,Parameters,Combobox,我正在创建一个程序,允许用户输入数据,然后单击按钮查看所述数据。在第一帧中,我希望用户从组合框中选择一个项目,当他们单击按钮时,它从组合框中获取所选项目,并将其作为另一个方法的参数输入,该方法将从文件中调出数据。此方法尚未完成 我目前掌握的守则如下: import java.awt.Container; import java.awt.EventQueue; import java.awt.List; import java.awt.event.ActionEvent; import java.
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();
}
}
}
似乎不起作用,我认为这是由于ChooseItems声明的位置,这意味着没有ChooseItems可以获取所选项目
非常感谢您的帮助。谢谢。按一下按钮就可以得到所需的物品。这是正确实施的。您需要将项传递给适当的方法,该方法将显示数据。行ViewData view=new ViewDataItem让我感到困惑。。ViewData是代码中的一个类,否则该行甚至无法编译。您也使用ViewData作为按钮的名称,这就是为什么它令人困惑的原因。抱歉,刚刚添加了更多信息,ViewData既是类名也是按钮名。
Item = ChooseItems.getSelectedItem();