繁体   English   中英

Java Windows Builder JList加载条件

[英]Java Windows Builder JList Load Condition

我正在创建一个医疗保健管理系统(患者,医务人员,专家...),我想通过将显示特殊性的ComboBox的值过滤将出现在JList Pannel(listEspecialistas)中的专家。 例如,创伤学是ComboBox的价值,创伤专家将显示在列表面板中。 这是我从txt文件(在代码中称为“ especialistas”)加载专家的方式

private void filtrarPor(String especialidad){//filterBy
    //If cbEspecialidades-getSelectedItem()/ComboBoxValue==Traumatology
    if(cbEspecialidades.getSelectedItem().equals("Traumatología")){
        Scanner sc;
        Especialista aux;
        StringTokenizer st;

        try {
            sc = new Scanner (especialistas);
            sc.nextLine();
            while (sc.hasNextLine()) {
                st = new StringTokenizer(sc.nextLine(), ";"); 
                while (st.hasMoreTokens() && st.equals("Traumatología")) {

                    aux = new Especialista (st.nextToken(), st.nextToken(), st.nextToken(),
                        st.nextToken(), st.nextToken(), st.nextToken(),new ImageIcon(Pacientes.class.getResource(st.nextToken())));

                    modelo.addElement(aux);

                }

                listEspecialistas.setModel(modelo);
            }

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }   

}

Modelo在该类中被声明为上层:

DefaultListModel <Especialista> modelo = new DefaultListModel <Especialista>();

这是txt文件的结构方式:

Name;Surname;Schedule;email;phoneNumber;Speciality;profile picture route

例:

Francisco;Lopez Navarro;10:00/14:00;franciscolopez@gmail.com;956325485;Traumatología;/presentacion/Imagenes/Especialistas/paco-126.png

还有其他一些专家的实例。

程序将文件加载到列表面板中的方式可以完美地工作(我知道效率不是很高),因此唯一的办法就是添加以下条件:如果所扫描的令牌之一等于Traumatology,Cardiology(无论怎么说),只会拿起那条线,并将其添加到modelo 有什么建议么? 谢谢。

您所需要做的只是进行if检查,以查看该行的实例化Especialista是否符合条件,然后再添加到模型中。

我修复了您可能也会做的其他一些错误。

private void filtrarPor(String especialidad){
        Scanner sc;
        Especialista aux;
        StringTokenizer st;

        try {
            sc = new Scanner (especialistas);
            sc.nextLine();
            while (sc.hasNextLine()) {
                st = new StringTokenizer(sc.nextLine(), ";"); 
                if(st.countTokens() >= 7) { //skip not valid Especialista

                    aux = new Especialista (st.nextToken(), st.nextToken(), st.nextToken(),
                        st.nextToken(), st.nextToken(), st.nextToken(),new ImageIcon(Pacientes.class.getResource(st.nextToken())));

                    if(aux.getEspecialidade().equals(especialidad))
                        modelo.addElement(aux);

                }
            }
            listEspecialistas.setModel(modelo);//you can set the model with your list after everything is loaded
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    } 
}

暂无
暂无

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

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