Skip to content
Snippets Groups Projects
Commit 37914809 authored by Vesa Lappalainen's avatar Vesa Lappalainen :bicyclist:
Browse files

Add README.md

parent 6fe99e79
Branches main
No related tags found
No related merge requests found
README.md 0 → 100644
# 1. fi.jyu.mit.gui -komponentit
- Swingin ​gui-luokkia, joilla `List`, tukku `RadioButtoneita` ja `ComboBox` käyttäytyvät samalla tavalla.
- [yksinkertainen käytööesimerkki](blob/main/src/fi/jyu/mit/gui/example/SimpleListExample.java)
## 1.1 Käyttö
- lataa ​gui.jar
- käyttää voi joko kirjaston kautta tai jar-tiedostoa suoraan
- jar-tiedoston käyttö suoraan
- oikealla napilla Eclipsen projektin nimen päällä Properties
- Java Build Path/Libraries/Add External Jars
- etsi gui.jar
- käyttö kirjaston kautta
- tee itsellesi User Library nimeltä gui ohjetta mukaillen
- liitä projektiin User Library gui (tai gui16)
- ota WindowBuilderissä lisättävien komponenttien (Palette)
System-kohdasta Choose Component ja kirjoita tähän haluamasi luokan nimen alkua ja valitse haluamasi luokka
- usein tuntuu valittavan että ei voi lisätä, mutta silti lisääntyy
- jatkossa nämä lisätyt löytyvät Custom-kohdasta
- valitsimissa voit Kohteet-kohdasta lisätä merkkijonoja suunnittelun aikana
- voit myös ensin luoda StringListModel -komponentin ja täyttää sen
haluamallasi tavalla ja sitten lisätä tämän Model-ominaisuutena valitsimeen.
## 1.2 Valitsimet
- ListChooser, ComboBoxChooser, RadioButtonChooser ja CheckBoxChooser kaikki käyttäytyvät samalla tavalla (ks​AbstractChooser.java)
- suunnitteluaikana lista näkyvistä valinnoista laitetaan kohteet-ominaisuuteen (voi tarvita avata lisäominaisuudet Properties-ikkunasta).
- voidaan pyytää valittuja listan tai valitsemisjärjestyksessä
- voidaan pyytää listan mukainen 1. valittu tai valintajärjestyksen 1. valittu tai viimeksi valittu
- Valinta-otsikko voidaan sijoittaa mihin tahansa 4-ilmansuuntaan tai piilottaa.
- jos teksti laitetaan vaikka West, kannattaa komponentin alta ottaa getCaptionLabel
ja siihen laittaa vaikka borderiksi Empty border, joka jättää sopivasti tilaa tekstin ja valinta-komponentin väliin.
- alkion lisääminen listaan
list.add(jono);
- Listassa, RadioButton- ja CheckBox- valitsimessa rullaus valmiina
- Listassa ja CheckBox-listassa voidaan valita montako maksimissaan saa valita (-1=kaikki).
- kuhunkin jonoon voidaan liittää joku olio
list.add(jono,olio);
tai
list.setObject(i,olio)
## 1.3 EditPanel
- ​EditPanel jossa on Label ja Edit samassa
- undo/redo
## 1.4 Tietovirrat
- tietovirrat tekstikenttään tulostamiseksi (ks. esim naytaJasen).
- ​TextAreaOutputStream.java
- ​TextAreaWriter.java
### 1.5 StringTable yms.
- alustava ​StringTable - luokka
- ks käyttömalli: ​StringTableSuunniteltuKayttotapa
- kokeile:
java -cp gui.jar fi.jyu.mit.gui.example.StringTableSuunniteltuKayttotapa
- jos haluaa suunnitteluaikana laittaa jonoja, pitää ottaa komponentin alta getTable() ja sen ominaisuuksista muutella modelia.
- luokkaan tulee valmiiksi pystysuuntainen liuku
- jos haluaa vaakasuuntaisen liun, pitää ottaa komponentin alta getTable()
ja sen ominaisuuksista muutella lisäominaisuutta autoResizeMode (esim OFF).
- oliomaisempi versio ​ObjectTable, johon voi tallentaa olioviitteen jokaisen solun kohdalle halutessaan.
ks käyttömalli: ​ObjectTableSuunniteltuKayttotapa
## 1.6 Todo
- tapahtumankäsittely Swingin omilla tavoilla. Nyt on ongelma kun tuolta "irtaannutaan".
- vastaavanlainen StringGrid jota olisi helppo käyttää
- dokumentit
- testit
# 2. KerhoSwing-esimerkki ListChooserilla
## 2.1 Alustus
Ei mitään ihmeellistä
## 2.2 Alkio yhdelle listan jäsenelle
Ei tarvita
## 2.3 Listan tietojen täyttäminen
Nyt kun listaan tarvitsee saada tieto, voidaan se tehdä esimerkiksi seuraavasti:
/**
* Suorittaa niiden jäsenten hakemisen, joiden valittu kenttä täyttää hakuehdon
* TODO: nyt haetaan vielä kaikki jäsenet
*/
protected void hae() {
listJasenet.clear();
for (Jasen jasen : kerho) {
listJasenet.add(jasen.getNimi(),jasen);
}
}
## 2.4 Klikatun jäsenen tunnistaminen
Aluksi listan klikkausmetodi on alustamisvaiheessa yhdistetty sopivaan aliohjelmaan:
/**
* Tämä alustaa valitut alueet käyttökuntoon.
*/
public void alusta() {
...
listJasenet.addSelectionChangeListener(new SelectionChangeListener() {
@Override
public void selectionChange(IStringListChooser sender) { naytaJasen(); }
});
...
}
Sitten kun klikkaus tapahtuu, otetaan klikattu jäsen ja näytetään vastaavat tiedot:
/**
* Näyttää listasta valitun jäsenen tiedot
*/
protected void naytaJasen() {
int ind = listJasenet.getSelectedIndex();
if (ind < 0) return;
jasenKohdalla = (Jasen)(listJasenet.getSelectedObject());
areaJasen.setText("");
PrintStream os = TextAreaOutputStream.getTextPrintStream(areaJasen);
tulosta(os, jasenKohdalla);
}
## 2.5 Uuden jäsenen lisäys
Uuden jäsenen lisäys on melkein helpointa tehdä niin, että jäsen lisätään suoraan Kerhon kautta ja sitten täytetään JList tämän jälkeen kokonaan uudelleen.
public void uusiJasen() {
jasenKohdalla = new Jasen();
jasenKohdalla.rekisteroi();
jasenKohdalla.vastaaAkuAnkka();
try {
kerho.lisaa(jasenKohdalla);
} catch (SailoException e) {
JOptionPane.showMessageDialog(null,
"Ongelmia lisäämisessä! " + e.getMessage());
}
hae(jasenKohdalla.getTunnusnro());
}
mutta toisaalta voitaisiin myös tehdä
kerho.add(uusiJasen);
listJasenet.add(uusiJasen.getNimi(),uusiJasen);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment