Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Swing: Nappulataulukko

Andu [17.09.2007 15:33:04]

#

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

tsuriga [17.09.2007 16:45:41]

#

JButton nappula[] = new JButton[10];

Andu [17.09.2007 16:50:16]

#

Nyt toimii, kiitos!

Andu [18.09.2007 19:03:39]

#

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.

tsuriga [18.09.2007 19:48:44]

#

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().

Andu [18.09.2007 20:14:07]

#

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 :)

FooBat [19.09.2007 19:18:32]

#

implementoida = toteuttaa (vrt. eng. implement)
implementaatio = toteutus (eng. implementation)

Käytössä erityisesti ohjelmoinnin yhteydessä.

Vastaus

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

Tietoa sivustosta