java - 如何存储从 JTextFields、JComboBox 和 JSpinners 获取的数据?

标签 java swing user-interface

背景:我正在为一家游轮公司创建一个 GUI。我开发了一个 GUI,您可以在其中向系统“添加巡航”。我目前正在努力解决如何获取所有输入的数据并存储数据。

我有以下 Swing 组件:

  1. JTextField - 输入邮轮名称
  2. JcomboBox 's (2) - 选择起始端口和结束端口
  3. JSpinner s (2) - 输入邮轮开始和结束日期。

问题:单击“添加巡航”按钮后,我理想地希望将新的巡航信息存储在巡航ArrayList中:

public ArrayList <Cruise> cruises;

但是我不确定如何从 swing 组件获取数据并将其添加到 ArrayList当用户单击“添加巡航”时,因为并非所有 Swing 组件都是字符串格式。我该怎么办?

我如何创建组件:

  1. JTextField

    Cruisename = new JTextField();
    contentPane2.add(Cruisename);
    Frame2.add(contentPane2, BorderLayout.CENTER);
    Frame2.setVisible(true);
    
  2. 用于起始端口的 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);
    
  3. 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/

相关文章:

java - 在ActionListener中处理ActionListener

algorithm - 哪一个是撤消/重做行为的可接受约定?

javascript - 从具有多个按钮的模态返回一个值( react )

matlab - 在 MATLAB 创建的 GUI 中显示编辑图片的问题

java - 用测试数据填充内存数据库的模式

java - 下拉菜单未按预期工作

java - 如何让我的简单猜谜游戏发挥作用?

java - 在 Eclipse 上测试时如何传递 -D 系统属性?

java.io.FileNotFoundException : (Permission denied) 错误

java - 如何在 JAXB 的 unmarshal xml 中转义特殊字符