Miten Swingillä voi tehdä painiketaulukon? Ei olisi kivaa, tehdä jokaista nappia erikseen.
Tämä ei ainakaan toimi...
JButton nappula[10]; for (int i = 0; i < 10; i++) nappula[i] = new JButton("Nappi");
Heittää erroria:
G:\java\Swingtest>javac Ikkuna.java Ikkuna.java:9: ']' expected JButton nappula[10]; ^ 1 error
JButton nappula[] = new JButton[10];
Nyt toimii, kiitos!
Vielä aiheeseen liittyen. Koodia:
JButton nappula[] = new JButton[10]; for (int i = 0; i < 10; i++) nappula[i] = new JButton("" + i); JLabel teksti; teksti = new JLabel("Et ole painanut nappulaa"); for (iii = 0; iii < 10; iii++) { nappula[iii].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent tapahtuma) { teksti.setText("Painoit nappulaa: " + iii); } } ); }
Miten tuohon "Painoit nappulaa: ":n perään saisi tuon nappulan numeron? Nyt kun siihen tulee aina 10.
Tuon ensimmäisen silmukan i ei ole voimassa kuin kyseisen silmukan sisällä, joten seuraavan silmukan silmukkamuuttujaa ei tarvitsisi nimetä uudelleen. Tuon ensimmäisen for-loopin voisi jäsentää useammalle riville kera kaarisulkujen, luultavasti löytyy samanlainen ohjeista Java Coding Conventioneista. Eikä tuota iii:tä ole alustettu missään. Toinen for-silmukka on turha, voithan heittää nuo actionListenerit mukaan ensimmäisessä silmukassa.
Sen verran on aikaa kulunut kun Javalla olen vääntänyt (onpa kerenny kasvaa kaks kymmenystä versionumerokin), että seuraava ohje ei välttämättä ole paras eikä ainoa vaihtoehto.
Voisit tehdä niin, että luokkasi implementoi ActionListenerin. Veikkaan, että tässä voi olla näkyvyysongelma (tuo ActionListener ei siis tässä tilanteessa tietäisi, mikä tuo teksti on). Tällöin addActionListenerille annetaan parametrina this, ja teksti.setTextiin tulee "Painoit nappulaa: " + ((JButton)ae.getSource()).getText()
.
tsuriga kirjoitti:
Tuon ensimmäisen for-loopin voisi jäsentää useammalle riville kera kaarisulkujen
Minusta se on ainakin selkeämpi noin. Siis jos ei liitä tuota toista for-looppia siihen.
tsuriga kirjoitti:
Eikä tuota iii:tä ole alustettu missään.
Eikä myöskään ole mm. main():a olemassakaan ;)
tsuriga kirjoitti:
implementoi
Mitäs tuo mahtaa tarkoittaa? Eipä ole ennen tullut vastaan :)
implementoida = toteuttaa (vrt. eng. implement)
implementaatio = toteutus (eng. implementation)
Käytössä erityisesti ohjelmoinnin yhteydessä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.