2017-04-06 49 views
1

this is the picture of the form I am working on因此,我有一个程序从用户输入(客户信息和地址)创建一个文件,我需要从文件中获取信息,创建一些记录后,只有在组合框中有一个名称,并且可以从现有名称列表中选择该框来编辑客户。从文件中为组合框设置一个值

一些代码,我到目前为止有: 这是我从输入写入文件:

private void createCustomer() { 
     //getting text from the fields 
     int id = Integer.parseInt(txfId.getText()); 
     String name = String.valueOf(txfName.getText()); 
     String lastName = String.valueOf(txfSurname.getText()); 
     String buisness = String.valueOf(txfBuisness.getText()); 
     String street = String.valueOf(txfStreet.getText()); 
     String unit = String.valueOf(txfUnit.getText()); 
     String city = String.valueOf(txfCity.getText()); 
     String province = String.valueOf(txfProvince.getText()); 
     String postal = String.valueOf(txfPostal.getText()); 
     String email = String.valueOf(txfEmail.getText()); 
     String phoneNumber = String.valueOf(txfPhone.getText()); 

     Address address = new Address(unit, street, city, province, postal); 
     Customer customers = new Customer(id, name, lastName, 
       phoneNumber, email, address, buisness); 

     File file = new File("customer.txt"); 
     //appending to a file 
     try (PrintWriter writer = new PrintWriter(new FileWriter(file, true))) { 

      writer.print("id: " + id); 
      writer.print(", First name: " + name); 
      writer.print(", Last name: " + lastName); 
      writer.print(", Phone Number: " + phoneNumber); 
      writer.print(", Email: " + email); 
      writer.print(address); 
      writer.println(", Buisness: " + buisness); 
     } catch (IOException ex) { 
      System.out.println(ex.toString()); 
     } 
     chooseExisting.getItems().add(name); 
     //hooseExisting.setId(name); 
     chooseExisting.setValue(name); 
     chooseExisting.setOnAction(e -> { 

     }); 
     //clearing the text after it saved 
     txfId.clear(); 
     txfName.clear(); 
     txfSurname.clear(); 
     txfBuisness.clear(); 
     txfStreet.clear(); 
     txfUnit.clear(); 
     txfCity.clear(); 
     txfProvince.clear(); 
     txfPostal.clear(); 
     txfEmail.clear(); 
     txfPhone.clear(); 

    } 

我想我的组合框chooseExisting摆脱申请和名义值“记住它“,以及我如何做到这一点,所以每次打开应用程序时,它都会从我创建的客户那里下载。

回答

0

调用retriveNamaData()方法到您的构造函数之后的initComponents()

public Constructor() { 
    initComponents(); 
    retriveNameData(); 
} 



private void createCustomer() { 
    //getting text from the fields 
    int id = Integer.parseInt(txfId.getText()); 
    String name = String.valueOf(txfName.getText()); 
    String lastName = String.valueOf(txfSurname.getText()); 
    String buisness = String.valueOf(txfBuisness.getText()); 
    String street = String.valueOf(txfStreet.getText()); 
    String unit = String.valueOf(txfUnit.getText()); 
    String city = String.valueOf(txfCity.getText()); 
    String province = String.valueOf(txfProvince.getText()); 
    String postal = String.valueOf(txfPostal.getText()); 
    String email = String.valueOf(txfEmail.getText()); 
    String phoneNumber = String.valueOf(txfPhone.getText()); 

    Address address = new Address(unit, street, city, province, postal); 
    Customer customers = new Customer(id, name, lastName, 
      phoneNumber, email, address, buisness); 

    File file = new File("customer.txt"); 
    //appending to a file 
    try (PrintWriter writer = new PrintWriter(new FileWriter(file, true))) { 

     writer.print("id: " + id); 
     writer.print(" , First name: " + name); 
     writer.print(" , Last name: " + lastName); 
     writer.print(" , Phone Number: " + phoneNumber); 
     writer.print(" , Email: " + email); 
     writer.print(address); 
     writer.println(" , Buisness: " + buisness); 
    } catch (IOException ex) { 
     System.out.println(ex.toString()); 
    } 

    retriveNameData(); 

//chooseExisting.getItems().add(name); 
//hooseExisting.setId(name); 
//chooseExisting.setValue(name); 
//chooseExisting.setOnAction(e -> { 
//  }); 
//clearing the text after it saved 

    txfId.setText(""); 
    txfName.setText(""); 
    txfSurname.setText(""); 
    txfBuisness.setText(""); 
    txfStreet.setText(""); 
    txfUnit.setText(""); 
    txfCity.setText(""); 
    txfProvince.setText(""); 
    txfPostal.setText(""); 
    txfEmail.setText(""); 
    txfPhone.setText(""); 

} 

// this method will retrieve the Name data from the text file. 
private void retriveNameData(){ 
    String line; 
    try{ 
     InputStream fis = new FileInputStream("customer.txt"); 
     InputStreamReader isr = new InputStreamReader(fis, Charset.forName("UTF-8")); 
     BufferedReader br = new BufferedReader(isr); 

     while ((line = br.readLine()) != null) { 
      String[] words = line.split(" "); 
      String item=words[5]+" "+words[9]; 
      chooseExisting.addItem(item); 
     } 
    }catch(Exception e){ 

    } 
} 

这不是一个很好的做法,在所有的,我建议你使用数据库这一点。

+0

方法chooseExisting.addItem(item);给我一个错误,它需要String。我之前遇到过这个问题。有没有其他的方式来添加项目? – Dennys

+0

好吧,我将它改为chooseExisting.getItems()。add(item); 。但我得到的东西看起来不是我想看到的:))))在下拉菜单中,我看到了员工的组合,而不是名称,以及如何选择一个名称将其放到字段中,所以我可以编辑它 – Dennys

+0

改变索引'String item = words [5] +“”+ words [9];'直到它产生预期的结果。 –

0

要让应用程序“记住它”,您需要将数据存储在本地或数据库中。

如果你正在使用一个文件,你必须解析里面的字符串,我会使用for循环。要实际获取每个字符串,您必须使用文件读取器。 Java有一个扫描器。查找扫描仪api。如果你发布了一个你的文本文件的照片,我可以帮你解析它。

+0

我有一个文本文件,其中包含一些以逗号分隔的格式存储的数据。如何将第二个字段上传到复选框?并将其余的信息放入文本字​​段中? – Dennys

+0

我发布了一张照片。请参阅我的问题更新,有一个链接 – Dennys

相关问题