Archief - [Java] imagelabel verbergen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

X1RON

Legacy Member
Ik heb de volgende code gebruikt om een logo toe te voegen aan mijn javaprogramma:

Code:
        JLabel imageLabel = new JLabel();
        ImageIcon ii = new ImageIcon(this.getClass().getResource("logo.gif"));
        imageLabel.setIcon(ii);
        add(imageLabel, BorderLayout.CENTER);

Wanneer ik op een knop druk wil ik echter dat dit logo verwijderd of verborgen wordt, zodat ik andere dingen in mijn form kan laten zien. Ik dacht dit te doen met imageLabel.setVisible(false);, maar dan geeft hij altijd een nullPointerException.

Iemand die mij raad kan geven? :)

X1RON

Legacy Member
Dit is al het geval. Hier mijn volledige Paneel-klasse:
Code:
class Paneel extends JPanel {

    private JLabel scorelabel, fuellabel, logo, imageLabel;
    private ImageIcon ii = new ImageIcon(this.getClass().getResource("logo.gif"));
    private JButton start;
    private Maan maan;
    private Timer timer;
    private Lander lander;
    private boolean bezig = false;
    private double x, y;
    // private int xPunten[], yPunten[];

    public Paneel() {
        setLayout(new BorderLayout());

        maan = new Maan();
        lander = new Lander();


        start = new JButton("Start");
        timer = new Timer(20, new TimeHandler());

        addKeyListener(new ToetsenbordHandler());

        JLabel imageLabel = new JLabel();
        imageLabel.setIcon(ii);
        add(imageLabel, BorderLayout.CENTER);



        this.setBackground(Color.black);

        start.addActionListener(new ButtonHandler());

        add(start, BorderLayout.SOUTH);

Voorlopig ga ik er gewoon een afbeelding in de plaats zetten die dezelfde kleur heeft als de achtergrond.

Parnakra

Legacy Member
Code:
JLabel imageLabel = new JLabel();
Als je dit in je constructor zet, zal hij een lokale variabele imageLabel aanmaken die op dat moment het attribuut imageLabel zal 'overschrijven'. Dit veranderen naar
Code:
imageLabel = new JLabel();
zou moeten werken.

X1RON

Legacy Member
Parnakra zei:
Code:
JLabel imageLabel = new JLabel();
Als je dit in je constructor zet, zal hij een lokale variabele imageLabel aanmaken die op dat moment het attribuut imageLabel zal 'overschrijven'. Dit veranderen naar
Code:
imageLabel = new JLabel();
zou moeten werken.

Omg, zo'n stomme fout :) hier keek ik dus de hele tijd over!
Bedankt!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan