Avatar billede martinpoulsen_8378 Nybegynder
20. maj 2009 - 13:42 Der er 6 kommentarer

udskift af icon i et jLabel

Hej eksperter.

Jeg forsøger at lave en metode i et jPanel der udskifter et jLabels icon med et andet. Jeg er klar over, at jPanel har metoden setIcon, men når jeg bruger den forsvinder det oprindelige icon bare - men uden at det nye vises... mangler jeg en repaint metode eller noget lignende?

Vh
Martin
Avatar billede mcb2001 Nybegynder
20. maj 2009 - 14:46 #1
Er du sikker på det andet er rigtigt?
Altså har du testet det som "oprindeligt" og dermed set at det kan indlæses?

Repaint er altid en god ide, men det vil primært være hvis du har deaktiveret paint metoden.

Men du kan altid kalde "repaint()" direkte på din JFrame, så kalder den selv alle Containerer ned igennem :-)
Avatar billede arne_v Ekspert
20. maj 2009 - 21:31 #2
I foelgende kode virker det uden noget som helst:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class IconFun extends JFrame {
    private JLabel cont;
    private JButton chg;
    public IconFun() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        setTitle("Icon change deno");
        cont = new JLabel();
        getContentPane().add(cont, BorderLayout.CENTER);
        chg = new JButton("Change icon");
        chg.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                update();
            }
        });
        getContentPane().add(chg, BorderLayout.SOUTH);
        update();
        pack();
    }
    private int n = 0;
    private String[] icons = { "C:\\white.jpg", "C:\\red.jpg", "C:\\green.jpg", "C:\\blue.jpg", "C:\\yellow.jpg" }; 
    private void update() {
        cont.setIcon(new ImageIcon(icons[n]));
        n = (n + 1) % icons.length;
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new IconFun();
                f.setVisible(true);
            }
        });
    }
}
Avatar billede mcb2001 Nybegynder
25. maj 2009 - 09:56 #3
godt folk følger op på deres egne tråde...
Avatar billede martinpoulsen_8378 Nybegynder
25. maj 2009 - 10:35 #4
undskyld den manglende opfølgning, mit spamfilter er åbenbart begyndt at fange mails fra eksperten...

Jeg har fundet ud af, at min kode virker fint uden for Netbeans, som åbenbart har et problem med at initialisere nogle komponenter.

Hvis i sender mig et svar, skal jeg nok give jer points som tak for hjælpen.

Vh
Martin
Avatar billede arne_v Ekspert
25. maj 2009 - 13:36 #5
.
Avatar billede arne_v Ekspert
04. juli 2009 - 03:18 #6
mcb ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester