Jpanel dentro de um Jframe

14 respostas
A

Caros Colegas,

Sou iniciante em Java. Estou cursando o meu 4º semestre de Sistemas de Informação na Universidade Católica de Brasília, porém, esse é o meu primeiro semestre em Java. Estou desenvolvendo um projetinho de uma vídeo locadora como projeto final desse semestre e estou com problemas com Swing. Criei um Jframe e dentro desse JFrame eu quero chamar um JPanel....estou conseguindo fazer isso, mas não estou conseguindo posicionar os meus label e textFields dentro do Jpanel. Gostaria de ajuda dos colegas para me tirar essa dúvida.

segue o código da minha classe que cria um Jpanel a ser colocado dentro do meu Jframe e depois desse código segue o meu código do JFrame

desde já agradeço;

import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.sun.org.apache.xerces.internal.impl.dv.xs.YearDV;
import com.sun.xml.internal.ws.util.localization.Localizer;

public class PaineisCadastro extends JFrame{
	
	private JPanel painelCadCliente, painelCadAtor, painelCadFilme, painelCadFornecedor, painelCadAluguel;

	public JPanel getPainelCadCliente() {
		JPanel painelCadCliente = new JPanel();
		
		JLabel tituloCadCliente = new JLabel("CADASTRO DE CLIENTES");
		painelCadCliente.add(tituloCadCliente);
		
		JLabel nomeCliente = new JLabel("\nNome");
		painelCadCliente.add(nomeCliente);
		JTextField textNome = new JTextField(10);
		painelCadCliente.add(textNome);
		
		JLabel cpfCliente = new JLabel("CPF");
		painelCadCliente.add(cpfCliente);
		JTextField textCpf = new JTextField(10);
		painelCadCliente.add(textCpf);
		
		JLabel foneCliente = new JLabel("Telefone");
		painelCadCliente.add(foneCliente);
		JTextField textFone = new JTextField(10);
		painelCadCliente.add(textFone);
		
		JLabel emailCliente = new JLabel("E-mail");
		painelCadCliente.add(emailCliente);
		JTextField textEmail = new JTextField(10);
		painelCadCliente.add(textEmail);
		
		JLabel endCliente = new JLabel("Endereço");
		painelCadCliente.add(endCliente);
		JTextField textEnd = new JTextField(10);
		painelCadCliente.add(textEnd);
		
		return painelCadCliente;
	}]


//código do JFrame

[import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.management.JMException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.sun.org.omg.CORBA.Initializer;

public class VideoLocadora extends JFrame {

	private Container container;
	private JPanel painelCadClientes, painelCadAtor, painelCadFilme,
			painelCadFornecedor, painelCadAluguel;
	private JPanel painelCad;

	public VideoLocadora() {
		super(".::: PROJETO JAVA - VÍDEO LOCADORA :::.");
		setSize(800, 600);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		container = getContentPane();
		//container.setLayout(new FlowLayout());

		// criação de uma barra de menus
		JMenuBar menu = new JMenuBar();
		setJMenuBar(menu);

		// construção do menu Cadastro
		JMenu cadastro = new JMenu("Cadastro");
		menu.add(cadastro);

		// criando os itens do menu cadastro
		JMenu itemClientes = new JMenu("Cadastro de Clientes");
		JMenu itemAtores = new JMenu("Cadastro de Atores");
		JMenu itemFilmes = new JMenu("Cadastro de Filmes");
		JMenu itemFornecedores = new JMenu("Cadastro de Fornecedores");
		JMenu itemAluguel = new JMenu("Cadastro de Aluguel");
		JMenuItem itemSair = new JMenuItem("Sair");

		itemSair.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent chamar) {
				if (JOptionPane.showConfirmDialog(null,
						"Deseja sair do Programa?", "Fechar",
						JOptionPane.OK_CANCEL_OPTION,
						JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
					System.exit(0);
				}
			}
		});

		// adicionando os itens do menu cadastro
		cadastro.add(itemClientes);
		cadastro.add(itemAtores);
		cadastro.add(itemFilmes);
		cadastro.add(itemFornecedores);
		cadastro.add(itemAluguel);
		cadastro.add(itemSair);

		// criando e add subitens do itemClientes
		JMenuItem incluirClientes = new JMenuItem("Incluir novo Cliente");
		JMenuItem excluirClientes = new JMenuItem("Excluir Cliente específico");
		JMenuItem alteraClientes = new JMenuItem(
				"Alterar informações de um Cliente");
		itemClientes.add(incluirClientes);
		itemClientes.add(excluirClientes);
		itemClientes.add(alteraClientes);

		// Incluir clientes
		incluirClientes.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent incluir) {
				System.out.println("incluir Clientes");
				// JLabel nome = new JLabel("Nome");
				// painelCad = new JPanel();
				// container.setLayout(new FlowLayout());
				// container.add(nome);
				PaineisCadastro p = new PaineisCadastro();
				JPanel jp = new JPanel();
				jp = p.getPainelCadCliente();
				container.add(jp);
				setVisible(true);
			}
		});

14 Respostas

M

Você deve adicionar os labels e textFields ao panel e adicionar o panel ao container.

A

então…isso eu já estou fazendo…o que não estou conseguindo, é organizar, fazer o posicionamento desses labels e textfields…entende?

valeu

M

Ok, o método de posicionamento e tamanho é setBounds(int, int, int, int), onde cada int corresponde a (margemHorizontal, margemVertical, largura, altura).

Por exemplo:

nomeCliente.setBounds(30, 30, 100, 20);

A

m4rcu5:
Ok, o método de posicionamento e tamanho é setBounds(int, int, int, int), onde cada int corresponde a (margemHorizontal, margemVertical, largura, altura).

Por exemplo:

nomeCliente.setBounds(30, 30, 100, 20);

Eu fiz isso mas não funcionou…qual seria o layout que eu devo usar? ou eu devo setar como null?

M

Bem lembrado, o layout deve ser setado como null.

A

Esse layout tem qeu ser setado onde? no meu container o no meu Jpanel?

M

Nos dois, e você precisa definir as dimensões do panel também.

A

m4rcu5:
Nos dois, e você precisa definir as dimensões do panel também.

HUmmm…estou começando a entender…e como faz pra definir as dimensões do panel?

M

setBounds também, e as margens serão correspondentes ao JFrame. Coloque cores de fundo diferentes para saber o que é frame e o que é label. O método é setBackground(Color.BLACK); (por exemplo)

A

O problema é que não tenho noção nenhuma dos valores que devem ser usados nesse setBounds…tipo eu quero um JPanel quase do tamanho do Frame…e dentro do Panel eu quero organizar os labels e os Jtextfield…Dá uma olhada no meu código que aí vc como é mais experiente do que eu vai saber onde eu estou errando…valeu

M

Bom, você tem um frame de 800x600, faça painelCadCliente.setBounds(10, 10, 780, 580) e coloque uma cor de fundo diferente no container.

makoto

setBounds(X,Y,M,N) onde respectivamente “começa a largura”, “começa a altura”, “termina a largura”, “termina a altura”.

obs: o parametro 0 está na sua esquerda para largura e na parte de cima para altura.

A

Voce vai ficar aí até que horas? é pq estou no trabalho e agora eu tenho que ir ali resolver um probleminha e já volto para continuarmos…caso vc for ficar mais tempo na net…um abraço e valeu…vou tentar aqui…

L

Você pode usar um gerenciador de layout para organizar cada coisa no painel, como por exemplo o BoxLayout, GridBagLayout e etc.

Criado 30 de outubro de 2008
Ultima resposta 30 de out. de 2008
Respostas 14
Participantes 4