Pegar componentes numa jframe

6 respostas
M

Olá a todos, alguém sabe me dizer se há como estar listando todos os objetos numa jframe, jdialog, e jpanel?Se sim, como?Tentei o método, getComponents(), mas deu em nada!!

6 Respostas

diego2005

Porque não deu certo???

M

Ele me retorna apenas um!!Sendo que há, jmenu, jmenuitem, e outras coisas!!

diego2005

Um exemplo simples com getComponents:

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


public class GetComponents extends JFrame implements ActionListener {

    public GetComponents() {
        JButton btn1 = new JButton("Buttton 1");
        JButton btn2 = new JButton("Buttton 2");
        JButton btn3 = new JButton("Buttton 3");
        JButton btn4 = new JButton("Buttton 4");
        JButton btn5 = new JButton("Buttton 5");

        btn1.addActionListener(this);
        btn2.addActionListener(this);
        btn3.addActionListener(this);
        btn4.addActionListener(this);
        btn5.addActionListener(this);

        add(btn1, BorderLayout.NORTH);
        add(btn2, BorderLayout.WEST);
        add(btn3, BorderLayout.CENTER);
        add(btn4, BorderLayout.EAST);
        add(btn5, BorderLayout.SOUTH);

        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        showComponents(getContentPane());
    }

    public void showComponents(Container container) {
        Component[] components = container.getComponents();

        for (Component c : components) {
            System.out.println(c);
            System.out.println();
        }
    }

    public static void main(String[] args) {
        new GetComponents();
    }
}

T+

M

Sim, ai é beleza!!Sem problemas, mas não consigo pegar tudo o que tem na jframe!!Não só botões, mas mas também Menu, MenuItem e por ai vai!!

diego2005

Quando o componente é um container você tem que pegar os componentes direto nele.

Por exemplo, se você tem um JMenu, você tem que pegar os JMenuItems no JMenu, não no JFrame.

T+

M

Opa, Deu certo!!Valeu ai diego!!Ruim é que tenho que pegar um por um para estar setando a fonte deles!!

Criado 1 de novembro de 2007
Ultima resposta 1 de nov. de 2007
Respostas 6
Participantes 2