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
Annonceindlæg fra Infor
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 :-)
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); } }); } }
godt folk følger op på deres egne tråde...
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
Kurser inden for grundlæggende programmering