[ medi @ 01.09.2006. 00:29 ] @
Code:

import javax.swing.*;
import java.awt.event.*;

public class Test
{
    public static void main(String[] args)
    {
        final JFrame frame = new JFrame("Test");
        final JPanel panel = new JPanel();
        JButton button = new JButton("Test button");
        panel.add(button);
        frame.add(panel);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                panel.add(new JButton("Test button"));
            }
        });
        
        frame.setSize(300,200);
        frame.setVisible(true);        
    }
}


Interesuje me na koji način unutar actionPerformed metode narediti frame-u ili panel-u da se ponovo iscrtaju kako bi se pojavili novi dugmići? I ne samo u ovom konkretnom slučaju već i inače, koja metoda se koristi kad je potrebno ponovo iscrtati komponente unutar kontejnera nakon dodavanja ili mijenjanja komponenata?!
[ djura1 @ 01.09.2006. 09:12 ] @
Nisam 100% siguran, ali mislim da je metod invalidate(). U sustini, natera prozor da osvezi svoj layout. Ipak pogledaj u dokumentaciji za JFrame i njegove nadklase.
[ medi @ 01.09.2006. 09:51 ] @
Citat:
djura1:[...] ali mislim da je metod invalidate() [...]

... revalidate(). Nije, pokušavao sam da pozovem i revalidate() i repaint(), kako za JFrame tako i za JPanel objekat ali ništa. Jedino što mi prolazi u ovom konkretnom slučaju je ponovno pozivanje metode setVisible(true). Ali, to je samo u ovom jednostavnom primjeru, u komplikovanijim slučajevima ni to ne radi, a i sumnjam da je to prava metoda za to.

[ JPF @ 01.09.2006. 10:14 ] @
Trebalo bi da ti rade i panel.revalidate() i panel.validate().

http://java.sun.com/j2se/1.4.2...va/awt/Container.html#validate()

Citat:
The validate method is used to cause a container to lay out its subcomponents again. It should be invoked when this container's subcomponents are modified (added to or removed from the container, or layout-related information changed) after the container has been displayed.
[ anon315 @ 01.09.2006. 11:12 ] @
http://mindprod.com/jgloss/repaint.html
[ djalfirevic @ 03.09.2006. 07:52 ] @
Citat:
djura1: Nisam 100% siguran, ali mislim da je metod invalidate(). U sustini, natera prozor da osvezi svoj layout. Ipak pogledaj u dokumentaciji za JFrame i njegove nadklase.


Hmmm....
Zašto mi se čini da si programirao u MFC-u... Tamo je metoda Invalidate() za ponovno iscrtavanje prozora.