背景:我正在为一家游轮公司创建一个 GUI。我开发了一个 GUI,您可以在其中向系统“添加巡航”。我目前正在努力解决如何获取所有输入的数据并存储数据。
我有以下 Swing 组件:
-
JTextField
- 输入邮轮名称 -
JcomboBox
's (2) - 选择起始端口和结束端口 -
JSpinner
s (2) - 输入邮轮开始和结束日期。
问题:单击“添加巡航”按钮后,我理想地希望将新的巡航信息存储在巡航ArrayList中:
public ArrayList <Cruise> cruises;
但是我不确定如何从 swing 组件获取数据并将其添加到 ArrayList
当用户单击“添加巡航”时,因为并非所有 Swing 组件都是字符串格式。我该怎么办?
我如何创建组件:
JTextField
Cruisename = new JTextField(); contentPane2.add(Cruisename); Frame2.add(contentPane2, BorderLayout.CENTER); Frame2.setVisible(true);
用于起始端口的 JComboBox(结束端口 JComboBox 使用相同的字符串值进行类似制作)
startL = new JComboBox(); final JComboBox typeList2; final String[] typeStrings2 = { "", "Tobermory","Oban", "Isle of Mull", "Isle of Harris", "Lewis and Harris", "Stornoway", "Skye", "Portree"}; startL = new JComboBox(typeStrings2);
JSpinners 开始和结束日期
SpinnerModel model1 = new SpinnerDateModel(); JSpinner spinner1 = new JSpinner(model1);
最佳答案
对于JComboBox ,您提供了一个字符串数组。它存储为对象数组,但您可以将其转换回字符串。
String foo = (String) myComboBox.getSelectedItem();
在本例中,您可以强制转换它,因为您存储的是字符串。如果您要存储Potato
,您可以将其转换为:
class Potato {
String name;
double value;
String toString() {
return name;
}
}
Potato bar = (Potato) myComboBox.getSelectedItem();
然后,您可以从 Potato
中提取值:
double value = bar.value;
对于JSpinner ,因为您已将其存储为 SpinnerDateModel ,这取决于您是否需要日期输出或字符串输出。我来安排约会。可以从日期推断出字符串。
Date date = ((SpinnerDateModel) spinner1.getModel()).getDate();
在大多数情况下,放入 Swing 对象中的任何内容都将作为对象返回,但您始终可以将其转换为放入时所知道的内容,以获取所需的值。
如果您有不同的数据模型,它的操作方式应该与组合框类似。
关于java - 如何存储从 JTextFields、JComboBox 和 JSpinners 获取的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303759/