Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java JListin sisällön määritteleminen

heebp [20.04.2009 08:41:10]

#

Yritän tehdä Java-ohjelmaani hakutoimintoa. Joka ensinmäärittelee JComboBoxin tai JListin avulla tarkemmin mistä tauluista tietokannasta tietoa haetaan.
Idea on sama kuin esim Atin ajurisivulla kun määritellään millaista ajuria tarvitaan. Eli ensin on yksi JList josta sitten valitaan haluttu kohta, ja sitten toiseen JListiin ilmeestyy vielä tarkemmat kriteerit yms.
Ongelmana tässä muodostuu se, että en ole varma miten tämä pitäisi toteuttaa. Mikä on helpoin/ järkevin tapa määritellä tälläisen komponentin sisältö, kun yksi JList komponentti voi pitää sisällään monta eri valintaa aikasemmista valinnoista riippuen?

Metabolix [20.04.2009 11:14:26]

#

Lähtisin taas liikkeelle toiminnan ja ulkoasun erottamisesta. Tee ensin tekstipohjainen systeemi, jossa saat aiempien valintojen perusteella esille oikeat vaihtoehdot. Kun ensimmäinen vaihe toimii, voitkin tulostamisen sijaan laittaa tekstit JListiin.

Järkevä toteutus taas riippuu kohtien ja vaihtoehtojen määristä ja siitä, miten niiden suhteet on määritelty. Jotenkin pitää aina valinnan muuttuessa muodostaa uudestaan lista seuraavaan laatikkoon sopivista vaihtoehdoista. Ehkä saat nämä helposti tietorakenteistasi. Jos et, kannattaa aloittaa kirjoittamalla funktio, joka ottaa aiemmat valinnat ja tarkistaa, kuuluuko tietyn vaihtoehdon näkyä. Tämän kanssa saatkin jo koottua taulukollisen kelvollisia vaihtoehtoja.

heebp [21.04.2009 11:28:11]

#

Kun tätä nyt päässä ajattelen. Niin ongelmia muodostaa se, että miten tässä olisi tarkotus määritellä JComboBoxin sisältö. Sen jälkeen kun ensimmäisestä on jo valittu haluttu kohde.
Tässä vaikka yksi esimerkki skenaario:
Käyttäjä haluaa etsiä kannasta kaikki Matti nimiset henkilöt. Joten hän kirjoittaa hakukenttään "Matti" ja valitsee ensimmäisestä ComboBoxista "henkilö" joka viittaa siihen, että tietoa haetaan henkilo-taulusta. Seuraavassa ComboBoxissa on nyt määritelty henkilo-taulun kentät. Jotta tiedetään vielä tarkemmin mitä tietoa ollaan hakemassa. Tässä tapauksessa käyttäjä valitsee sieltä "nimi" ja painaa ok. Ohjelma hakee kaikki Matit käyttäjälle.
Toivottavasti ei ollut liian sekava avautuminen.
Eli miten määrittelen ComboBoxin sisällön riippuen aikasemmista valinnoista. Onko mahdollista jotenkin määritellä mikä sisältövaihtoehto piirretään käyttäjälle vai pitääkö tehdä jokaiselle vaihtoehdolle oma laatikko joka sitten piirretään tehtyjen valintojen perusteella vai miten?

Metabolix [21.04.2009 12:42:08]

#

Voit joko tehdä erilliset laatikot ja näyttää niistä oikean tai käyttää yhtä laatikkoa ja vaihtaa siihen vain uuden sisällön sen mukaan, mitä aiemmin valittiin. Ohjeita löytyy Javan dokumentaatiosta kyseisen komponentin kohdalta.

FooBat [22.04.2009 22:16:03]

#

Muistaakseni tässä tapauksessa oli parasta kuunnella ensimmäistä comboboxia itemListenerillä ja toteuttaa toinen combobox DefaultComboboxModelista perityllä luokalla, jonka sisällä on kaikki alavalinnat siististi taulukoitu. Ensimmäisen taulukon muuttuessa toisen boxin modelille sanotaan valittu vaihtoehto, jonka perusteella valitaan näytettävä data ja sanotaan, että data on muuttunut. JListalla oli vastaavasti ListModel, jolla pystyi vastaavasti toteuttamaan muuttuvan sisällön. Googlella varmaan löytyy esimerkkejä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta