繁体   English   中英

使用JComboBox ItemStateChanged侦听器使用XML中的数据填充JTextField

[英]Populate JTextField with data from XML using JComboBox ItemStateChanged listener

不幸的是,由于工作原因,我无法向该网站提供代码。 话虽如此,我将尽可能详细。 我正在使用XML文件填充基于“名称”元素的JcomboBox。 我有那部分工作。 我这样做的方法是使用DOM方法,然后在Object中为每个节点创建对象,然后使用set方法来获取所需的属性。

我现在所在的位置是我需要根据所选内容填充文本字段。 我正在努力弄清楚如何将所选内容与我需要的内容联系起来。 例如,假设我有一个名为“ Reference_Point_ID”的节点,我需要拉出一个名为“ Latitude”的子节点来填充JTextField。 如何将子节点与父节点关联以提取正确的数据?

再次抱歉,我无法提供代码,但是任何帮助将不胜感激。 谢谢。

更新-解决方案对于可能需要此信息的其他任何人。

为了将所需的数据提取到JComboBox中,我必须像这样修改模型:

public TestReferencePointXMLReaderGUI()
{
    initComponents();
    ReferencePointReader referencePointReader = new ReferencePointReader("path to your xml file");

    List<ReferencePointObject> listOfData = referencePointReader.getData();
    DefaultComboBoxModel<ReferencePointObject> model =
        (DefaultComboBoxModel<ReferencePointObject>) jComboBoxRefPointSelector.getModel();
    for (ReferencePointObject referencePointObject : listOfData)
    {
        model.addElement(referencePointObject);
    }

}

下面显示了如何根据所选内容更改文本字段中的数据。 我有话要说。 除非您希望ItemStateChanged返回先前的选择以及新的选择,否则需要确保添加if check语句。

    private void jComboBoxRefPointSelectorItemStateChanged(java.awt.event.ItemEvent evt)                                                           
{                                                               
    if (evt.getStateChange() == ItemEvent.SELECTED)
    {
        Object selected = jComboBoxRefPointSelector.getSelectedItem();
        ReferencePointObject selectedReferencePoint = (ReferencePointObject) selected;
        jTextFieldLat.setText(selectedReferencePoint.getLat());
        jTextFieldLong.setText(selectedReferencePoint.getLng());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM