2017-06-16 5 views
0

Ich mache eine QC-Software für unsere Produktionsstätten. Ich bin kein Spezialist im Programmieren, da ich Maschinenbau studiert habe, aber ich werde hier viele Hüte tragen und ich liebe eine gute Herausforderung. Wie auch immer, ich habe viele Tutorials zu RXTX und Beispielen gelesen und schließlich ein gutes Arbeitsprogramm gemacht. Es gibt einige Probleme, die poliert werden müssen, aber insgesamt funktioniert es. Eines dieser Themen auf der Combobox ist, wo ich die „verfügbaren Ports“ aufgelistet, die es für die serielle Kommunikation COMM findet: Hinweis: main.ports ist eine AufzählungRxTx auf JavaFX - Clearing ComboBox

// SCAN METHOD 
    public void doScan(ActionEvent event) { 
     System.out.println("You clicked Scan"); 
      doClearCBox(); 
      main.ports = CommPortIdentifier.getPortIdentifiers(); 
      //CLEAR COMBO BOX EVERY TIME YOU SCAN 


     while (main.ports.hasMoreElements()) 
     { 
      CommPortIdentifier curPort = (CommPortIdentifier)main.ports.nextElement(); 

      //get only serial ports 
      if (curPort.getPortType() == CommPortIdentifier.PORT_SERIAL) 
      { 
       main.portMap.put(curPort.getName(), curPort); 
       portList.getItems().add(curPort.getName()); 
      } 
     } 
    } 
    public void doClearCBox() 
    { 
     System.out.println("Clearing combo box and Enumeration"); 
     main.ports = null; 
     //JUST CLEAR RANDOM VALUES OR SOMETHING? 
     portList.getSelectionModel().clearSelection(0); 
     portList.getSelectionModel().clearSelection(1); 
     portList.getSelectionModel().clearSelection(2); 
     portList.getSelectionModel().clearSelection(); 
    } 

Das Problem, das ich ist begegnen, dass, wenn Sie drücken die "Scan" -Taste mehr als einmal wiederholt es im Grunde alles (so zum Beispiel sehen Sie eine Liste, die COM3, COM3) und wenn Sie es 5 Mal Sie sehen (COM3, COM3, COM3, COM3, COM3). Meine doClearCbox-Methode tut scheinbar nichts, ich möchte, dass sie die Combobox ausfüllt und ich kann sie nicht zum Laufen bringen. Jede Hilfe wird sehr geschätzt

Antwort

0

Die selectionModel in einem Kombinationsfeld (und anderen Steuerelementen) verwaltet, was derzeit ausgewählt ist. So

portList.getSelectionModel().clearSelection(index); 

nur deselects the item at index.

Die getItems()-Methode der Combobox gibt die Liste der Elemente im Kombinationsfeld zurück. Also, wenn Sie alle Artikel löschen möchten, tun Sie

portList.getItems().clear(); 
+0

Vielen Dank. Ich wusste, dass ich etwas Einfaches vermisste! –