Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
gui
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tie
ohj2
esimerkit
gui
Commits
28227432
Commit
28227432
authored
1 year ago
by
Vesa Lappalainen
Browse files
Options
Downloads
Plain Diff
Merge branch 'main' of
https://gitlab.jyu.fi/tie/ohj2/esimerkit/gui
parents
9a708104
64fd905c
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+165
-0
165 additions, 0 deletions
README.md
with
165 additions
and
0 deletions
README.md
0 → 100644
+
165
−
0
View file @
28227432
# 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
](
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
](
src/fi/jyu/mit/gui/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
](
src/fi/jyu/mit/gui/TextAreaOutputStream.java
)
-
[
TextAreaWriter.java
](
src/fi/jyu/mit/gui/TextAreaWriter.java
)
### 1.5 StringTable yms.
-
alustava
[
StringTable
](
src/fi/jyu/mit/gui/StringTable.java
)
- luokka
-
ks käyttömalli:
[
StringTableSuunniteltuKayttotapa
](
src/fi/jyu/mit/gui/example/StringTableSuunniteltuKayttotapa.java
)
-
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
](
src/fi/jyu/mit/gui/ObjectTable.java
)
, johon voi tallentaa olioviitteen jokaisen solun kohdalle halutessaan.
ks käyttömalli:
[
ObjectTableSuunniteltuKayttotapa
](
src/fi/jyu/mit/gui/example/ObjectTableSuunniteltuKayttotapa.java
)
## 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:
```
java
/**
* 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:
```
java
/**
* 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:
```
java
/**
* 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.
```
java
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ä
```
java
kerho
.
add
(
uusiJasen
);
listJasenet
.
add
(
uusiJasen
.
getNimi
(),
uusiJasen
);
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment