JComboBox wczytanie listy plików z katalogów podrzędnych

0

Witam, jestem z programowania bardziej zielony od layoutu tej strony i bardzo proszę o pomoc.
W programie mam 3 JComboBox, chciałbym aby w nich umieścić zawartość katalogów podrzędnych względem uruchomionego programu na zasadzie:

  1. JComboBox: wszystkie katalogi (z lokalizacji otwartego programu.)

  2. JComboBox: katalogi podrzędne do katalogu wybranego z 1 JComboBox.

  3. JComboBox: pliki wybrane w 2 JComboBox ,odfiltrowane wg rozszerzenia.

Wygląda to tak:
user image

kod jak na razie mam pusty:

private void ComboPrzedniotActionPerformed(java.awt.event.ActionEvent evt) {                                               
        // TODO add your handling code here:
    }

Jak widać piszę w Netbeans. Przegooglałem już chyba niemal wszystko i nie potrafię tego zrobić
Proszę POMOCY.
P.S. Program na zaliczenie przedmiotu...

0
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
        String rok = jComboBox1.getSelectedItem().toString();
        if(rok.equals("2010")){
            jComboBox2.removeAllItems(); //usuwasz itemy z jComboBox2 aby nie dodawały się cały czas
            jComboBox2.addItem("4a");
            jComboBox2.addItem("4a");
        }else if(rok.equals("2009")){
            jComboBox2.removeAllItems(); 
            jComboBox2.addItem("3a");
            jComboBox2.addItem("3b");
        }
}

Możesz spróbować tak :) analogicznie zrób z przedmiotem</i>

0
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
        String rok = jComboBox1.getSelectedItem().toString();
        if(rok.equals("2010")){                  //sprawdzasz który rok wybrałeś
            jComboBox2.removeAllItems(); //usuwasz itemy z jComboBox2 aby nie dodawały się cały czas
            jComboBox2.addItem("4a");      //dodajesz do jComboBox odpowiednie klasy 
            jComboBox2.addItem("4a");
        }else if(rok.equals("2009")){         //jeśli wybrałeś inny rok 
            jComboBox2.removeAllItems(); 
            jComboBox2.addItem("3a");
            jComboBox2.addItem("3b");
        }
}

Możesz spróbować tak :) analogicznie zrób z przedmiotem.

0

Dzięki za szybką odpowiedź. tylko chciałem aby w combo rok wpisać zawartość katalogu z programem (w ten sposób \Rok\klasa\przedmiot.txt) np c:\2010\4a\polski.txt (nasz program jest zapisany na dysku c:\ )
w pierwszym Combo mamy rok, w drugim klasa, w trzecim polski.txt

Twój kod zmieniłem tak:

private void ComboRokActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        String rok = ComboRok.getSelectedItem().toString();
        if(rok.equals("2010")){                  //sprawdzasz który rok wybrałeś
            ComboKlasa.removeAllItems();         //usuwasz itemy z jComboBox2 aby nie dodawały się cały czas
            ComboKlasa.addItem("4a");            //dodajesz do jComboBox odpowiednie klasy
            ComboKlasa.addItem("4a");
        }else if(rok.equals("2009")){            //jeśli wybrałeś inny rok
            ComboKlasa.removeAllItems();
            ComboKlasa.addItem("3a");
            ComboKlasa.addItem("3b");
        }
    }

ale nie wiem jak to uruchomić

we właściwościach mam:

ComboRok = new javax.swing.JComboBox();

ComboRok.setModel(new javax.swing.DefaultComboBoxModel(new String[] {rok}));  // <<-- co mam tu wpisać aby te combo ruszyło?

ComboRok.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        ComboRokActionPerformed(evt);
    }
});

// Code adding the component to the parent container - not shown here

deklaracja
private javax.swing.JComboBox ComboRok;

Niech będzie po Twojemu tylko jak później dynamicznie zmieniać dane odnośnie roczników, klas i przedmiotów) oraz wczytywać je ładnie do programu po starcie. Ja to wymyśliłem w katalogach myśląc że tak będzie najprościej...

0

a więc tak jak przeciągałeś tego comboboxa na panel to kliknij na niego prawym przyciskiem myszy następnie kliknij properties (właściwości) następnie znajdź w okienku właściwość model powinny tam być wartości item1, item2 po prostu pozmieniaj je na wartości jakie potrzebujesz np. "2010" ale tylko w comboboxie "rok" bo reszta będzie ci się generować automatycznie wrzucił bym ci screena ale mi print screen nie działa ;/

Dalej stwórz sobie na partycji c foldery "2010" itd. (te które przed chwilą dodawałeś do combo "rok")
a w tych folderach podfoldery następnie zamień tamten kod poniżej.

 private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String rok = jComboBox1.getSelectedItem().toString();

        String[] dir = new java.io.File("C:/"+rok).list();
        java.util.Arrays.sort(dir);
        for(int i = 0 ; i < dir.length ; i++){//wypisuje ci liste podkatalogów z katalogu rok
            System.out.println(dir[i]);        //tylko tak do sprawdzenia abys to mógł zobaczyć na
        }                                       // własne oczy :)

        jComboBox2.removeAllItems();
        for(int j = 0 ; j < dir.length ; j++){// dodajemy nazwy podfolderów do combo 2 
        jComboBox2.addItem(dir[j]);
        }
  
}          

Powinno działać

0

Super działa!! Tylko co z trzecim ComboBox'em w którym mam przedmioty tam muszę odfiltrować pliki wg rozszerzenia.

więc tymczasem nadal wołam POMOCY !!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1