JPanel nao aparece

5 respostas
S

Eu tenho um JFrame, e este comporta 2 JPanel … Estou usando BorderLayout para ele

Um dos JPanel é meu menu, agora tenho que usar setLayout(null) no meu menu, para posicionar os componentes com o setBounds()… mas, quando eu boto setLayout(null) no menu, ele some da tela… e quando eu deixo o setLayout como padrao, ele aparece… Mas com os componentes um do lado do outro, e oque eu preciso é que eles apareçam um embaixo do outro

Enfim, se alguem tambem tiver uma indicação de layout para posicionar elementos um embaixo do outro… pode citar tambem ! hehe :smiley:

5 Respostas

F

Posta o codigo, mas se for preciso usa o FlowLayout para os menus…sem o codigo fica dificil de entender

S
package view;

import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JPanel;

public class MenuPrincipal extends JPanel{

	private JButton jb_home = new JButton("HOME");
	private JButton jb_funcionario = new JButton("Funcionários");
	private JButton jb_pessoa = new JButton("Pessoas");
	private JButton jb_propriedade = new JButton("Propriedades");
	private JButton jb_conta = new JButton("Contas");
	private JButton jb_evento = new JButton("Eventos");
	private JButton jb_aviso = new JButton("Avisos");
	
	private static final long serialVersionUID = 1L;

	protected MenuPrincipal() {
		setVisible(true);
		setLayout(null);
		setBackground(new Color(154,205,50));
		addComponentes();
	}
	
	private void addComponentes() {
		add(this.jb_home);	
		add(this.jb_propriedade);
		add(this.jb_pessoa);
		add(this.jb_funcionario);
		add(this.jb_conta);
		add(this.jb_evento);
		add(this.jb_aviso);		
	}	
}

esse é o codigo do meu menu principal, ele nao ta aparecendo...

olha amigo, pelo que eu saiba o FlowLayout alinha os componentes em linha, e oque eu preciso, é alinhar eles em coluna... agradeço a atençao!

F

Pelo que vi, achei estranho em primeiro lugar vc estender com o JPanel e utilizar o metodo setVisible(), em segundo lugar, eh obvio que nao vai aparecer o seu menu, eu nao achei no seu codigo o Container tela = getContentPane(); que faz com que seus componentes aparecem no JFrame… da uma melhorada nesse codigo, pois esta meio confuso…

S

nao entendi mt bem, primeiro, getContentPane é usada para JFrames... esse meu JPanel é apenas o Menu que vai ir ao JFrame, vou postar o codigo do JFrame e do JPanel para ficar mais claro :wink:

Meu JFrame:
package view;

import java.awt.BorderLayout;
import java.io.IOException;

import javax.swing.JFrame;

public class CondoManager extends JFrame {
	
	private static final long serialVersionUID = 1L;

	public CondoManager() throws IOException {
		setTitle("Condo Manager");
		setSize(900, 700);
		setExtendedState(JFrame.MAXIMIZED_BOTH); 
		setLocationRelativeTo(null);
		setLayout(new BorderLayout());
		setVisible(true);
		add(BorderLayout.WEST, new MenuPrincipal());
		add(BorderLayout.CENTER, new Home());
	}

	public static void main(String[] args) throws IOException {
		new CondoManager();
	}
}
Meu Jpanel (MenuPrincipal):
package view;

import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JPanel;

public class MenuPrincipal extends JPanel{

	private JButton jb_home = new JButton("HOME");
	private JButton jb_funcionario = new JButton("Funcionários");
	private JButton jb_pessoa = new JButton("Pessoas");
	private JButton jb_propriedade = new JButton("Propriedades");
	private JButton jb_conta = new JButton("Contas");
	private JButton jb_evento = new JButton("Eventos");
	private JButton jb_aviso = new JButton("Avisos");
	
	private static final long serialVersionUID = 1L;

	protected MenuPrincipal() {
		setLayout(null);
		setBackground(new Color(154,205,50));
		addComponentes();
	}
	
	private void addComponentes() {
		add(this.jb_home);	
		add(this.jb_propriedade);
		add(this.jb_pessoa);
		add(this.jb_funcionario);
		add(this.jb_conta);
		add(this.jb_evento);
		add(this.jb_aviso);		
	}	
}
A

Para resolver seu problema creio que basta você definir o tamanho do JPanel com o seguinte método:

seuJPanelNull.setPreferredSize(new Dimension(200,100));

Criado 28 de fevereiro de 2012
Ultima resposta 18 de dez. de 2012
Respostas 5
Participantes 3