Swing-ohjelmoinnista

Terve!

Miten swing-ohjelmoinnissa kannattaa jakaa koodin toiminnallisuus ja itse käyttöliittymä eri tiedostoihin?

Jos mulla on iso ohjelma, jossa vaikkapa 3 eri "pääikkunaa", teenkö 3 eri tiedostoa joissa ohjelman toiminnallisuus suoritetaan?

Mitä jos ikkunan A nappia painetaan ja sen seurauksena pitää aueta ikkuna B, jonka tiedot myös pitää välittää A:n tietojen lisäksi toiminnallisuuden suortittavalle luokalle, kumman luokan toiminnallisuusluokassa työ sitten tehdään?

Näitä asioita ei tunnuta käsittelevän missään, en ainakaan mitään ole googlaamalla löytänyt. Sen tiedän, että koodi hajoaa käsiin jos näitä ei suunnitella etukäteen.

Ymmärsiköhän kukaan, mitä yritän kysyä? Yritin jo aiemmin kysellä, mutta en oikein saanut vastauksia. Tietäisköhän esim. Piru mistä löytäisin ohjeita?
2254
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

"Jos mulla on iso ohjelma, jossa vaikkapa 3 eri "pääikkunaa", teenkö 3 eri tiedostoa joissa ohjelman toiminnallisuus suoritetaan?"
Teet, koska se on iso.

"Mitä jos ikkunan A nappia painetaan ja sen seurauksena pitää aueta ikkuna B, jonka tiedot myös pitää välittää A:n tietojen lisäksi toiminnallisuuden suortittavalle luokalle, kumman luokan toiminnallisuusluokassa työ sitten tehdään? "

Ehdoton periaate on ettei saa tuplata( tai triplata) dataa - se on rumaa ja tulee ongelmia. Ja tulkitsen kysymyksen niin, että on monta ikkunaa joita käpälöidään mielivaltaisessa järjestyksessä eli oikeastaan muistuttaa client-server tilannetta. Joten oma luokka datalle, josta eri ikkuna-luokat hakee tietonsa. Voisi ehkä mennä jotenkin näin:
A:ssa muuttuu jotain
Data.setJotain("jotain");
// Data-luokan metodissa setJotain
jotain = str;
teeJotain(); // dataa käsitellään Data-luokassa
...
updateAll(); // päivittää kaikki ikkunat

Siis jokaisessa Datan set-metodissa tuo updateAll(). Tietysti Datassa pitää olla viittaukset kaikkiin ikkuna-luokkiin ja niissä taas viittaus Data-luokkaan. Toiminnallisuuden toteutat ko. ikkunan luokassa jossa toiminto tapahtuu. Tosin jos ja kun tuo updateAll() päivitää kaikkien ikkunoiden kaikki elementit, niin ohjelmasta saattaa tulla hidas tai "nykivä", jolloin joudut tekemään erityiset updateSejaSe()-metodit.
Tämä oli pikaisesti mietitty ratkaisu, joten en takaa mitään : ) Joku ongelmahan tostakin saattaa nostaa rumaa päätään. Toivottavasti tästä oli ennemmän apua kuin haittaa.

Äänestä

Kommentoi aloitusta


yleisesti kirjoitti:

Terve!

Miten swing-ohjelmoinnissa kannattaa jakaa koodin toiminnallisuus ja itse käyttöliittymä eri tiedostoihin?

Jos mulla on iso ohjelma, jossa vaikkapa 3 eri "pääikkunaa", teenkö 3 eri tiedostoa joissa ohjelman toiminnallisuus suoritetaan?

Mitä jos ikkunan A nappia painetaan ja sen seurauksena pitää aueta ikkuna B, jonka tiedot myös pitää välittää A:n tietojen lisäksi toiminnallisuuden suortittavalle luokalle, kumman luokan toiminnallisuusluokassa työ sitten tehdään?

Näitä asioita ei tunnuta käsittelevän missään, en ainakaan mitään ole googlaamalla löytänyt. Sen tiedän, että koodi hajoaa käsiin jos näitä ei suunnitella etukäteen.

Ymmärsiköhän kukaan, mitä yritän kysyä? Yritin jo aiemmin kysellä, mutta en oikein saanut vastauksia. Tietäisköhän esim. Piru mistä löytäisin ohjeita?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu