Avatar billede connorz Nybegynder
06. november 2005 - 15:17 Der er 3 kommentarer og
1 løsning

swing og "dynamisk" JPanel

Hejsa

Jeg vil have et JPanel, hvor det er muligt vha. en knap, at tilføje tekstfelter. Min ide er at have en Vector med JTextfield, og hver gang man trykker på knappen, indsættes et nyt JTextField i vektoren, og JPanel'et, der indeholder alle JTextFields opdateres. Dette gøres i en JFrame. Men jeg kan ikke få det til at virke. Jeg har følgende kode:

public class AttributesFrame extends JFrame implements ActionListener {

    private Vector<JTextField> _attributes = new Vector<JTextField>();
   
    JPanel _attributesPanel;
    JButton _addBtn;

    public AttributesFrame() {
        super("Title");
        init();
        setSize(new Dimension(200,200));
        this.setVisible(true);
    }

    private void init() {
        JPanel main = new JPanel();
        _attributesPanel = new JPanel();
        _attributesPanel.setLayout(new RiverLayout());
       
        JPanel buttonPanel = new JPanel();
        _addBtn = new JButton("Add");
        _addBtn.addActionListener(this);
        buttonPanel.add(_addBtn);
       
        main.add(_attributesPanel);
        main.add(buttonPanel);

        getContentPane().add(main);
    }
   
    private void update() {
        _attributesPanel.removeAll();
       
        for (JTextField field : _attributes) {
            _attributesPanel.add("br",field);
        }

                repaint();
    }

    public void actionPerformed(ActionEvent action) {
        if (action.getActionCommand().equals("Add")) {
            _attributes.add(new JTextField("New attribute"));
        }
        update();
    }
}

Mine textfields bliver tilføjet vektoren, men de kommer ikke frem. De kommer, hvis jeg resizer framen, men burde det ikke kalde den samme repaint(), som jeg kalder?!?!

Al hjælp er cool!
Avatar billede arne_v Ekspert
06. november 2005 - 17:25 #1
enten:

getContentPane().validate();

eller:

pack();
Avatar billede connorz Nybegynder
06. november 2005 - 17:50 #2
ja jeg kendte ikke lige til validate - det var jo den jeg skulle bruge!

Smid et svar!
Avatar billede arne_v Ekspert
06. november 2005 - 17:51 #3
gerne
Avatar billede arne_v Ekspert
06. november 2005 - 22:49 #4
jeg tror faktisk at:

validate();

også virker.
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