Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Komponentit näkyviin

Macro [23.07.2011 21:10:22]

#

Terve

Javalla koitan saada piirrettyä uusia komponentteja, mutta nämä eivät tule näkyviin.

...
    private void statistiikkaActionPerformed(java.awt.event.ActionEvent evt) {
        pelaanyt.setVisible(false);
        statistiikka.setVisible(false);
        poistu.setVisible(false);

        final JLabel stats = new JLabel(statistiikka());
        JButton valikkoon = new JButton("Takaisin päävalikkoon");
        sisältö.add(stats);
        sisältö.add(valikkoon);
        stats.setVisible(true);
        valikkoon.setVisible(true);


        valikkoon.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                stats.setVisible(false);
                pelaanyt.setVisible(true);
                statistiikka.setVisible(true);
                poistu.setVisible(true);
            }
        });
    }
...

"sisältö" on JPanel-tyyppinen elementti. Siihen pitäisi piirtää allekkain JLabel "stats" ja JButton "valikkoon". Tuota kutsuttaessa kaikki entiset elementit piilotetaan oikein, mutta seuraavia ei näytetä. Missä vika?

Jokotai [23.07.2011 21:44:15]

#

Mitä statistiikka-funktiossa palautuu?

Macro [23.07.2011 21:48:18]

#

Merkkijono. Se yllä toimii, eikä Netbeans anna virheitä mistään.

Jokotai [23.07.2011 21:55:40]

#

Ei, en tarkoittanut sitä, vaan millaisia arvoja se antaa?

Macro [23.07.2011 22:31:58]

#

Se palautaa merkkijonon "statistiikka()". Se osa ohjelmaa on vielä vähän kesken, joten siellä ei ole mitään kummallista.

Metabolix [23.07.2011 23:01:44]

#

Ongelmana on hankala lähestymistapa. Teoriassa voisit kyllä poistaa (remove-metodilla) vanhat elementit ja laittaa tilalle uudet, mutta se ei ole kovin kätevää. Helpompi vaihtoehto on tehdä jokaisesta näkymästä erillinen paneeli ja vaihdella näkyvää paneelia vaikkapa CardLayoutin avulla.

Macro [24.07.2011 10:17:05]

#

Kiitos Metabolix. CardLayout olikin helpompi tapa.

Vastaus

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

Tietoa sivustosta