botão para abrir outra tela

Oiii gente, to começando a ver o swing agora e fiquei com uma dúvida, ja que é bem diferente de delphi q foi onde mexi primeiro com interface,
estou me confundindo com os jpanel e jframe, o professor orientou a criar um jframe e logo colocar um jpanel dentro, até ai tudo bem, mas na minha
tela, vão ter botões que levam para outras telas, então terei que criar mais jframes com jpanel dentro para cada um?
beijokas

Olá Mariana

O JFrame é a estrutura de tela. O JPanel é um painel onde vc pode colocar botão, caixa de textos, etc. Um JFrame não necessita sempre de um JPanel. Você pode colocar diretamente um botão em um frame.

Utilizo painéis por questões estéticas já que para cada frame vc pode colocar vários paineis.

O interessante é utilizar algum tipo de layout (BorderLayout, FlowLayout, GridLayout, …) para alinhar e estruturar suas janelas. Ou pode posicioná-los manualmente.

Só complementando, você pode utilizar tb o JDesktopPane com JInternalFrame para criar um esquema de um frame global com janelas no interior. Acho um solução interessante.

Todo JFrame já vem com um JPanel dentro, chamado ContentPane. A rigor, não é necessário criar ainda um outro JPanel.

Agora, para cada tela, sim, você terá que ter um JFrame com seus vários JPanels dentro (não é muito diferente no Delphi, lá agrupavamos componentes em grupos também).

Obrigada, fiz umas coisinhas,essa é a tela principal:

[code]package swing;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class LojaTelaPrincipal extends JFrame {

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				LojaTelaPrincipal frame = new LojaTelaPrincipal();
				frame.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}

/**
 * Create the frame.
 */
public LojaTelaPrincipal() {
	setTitle("Mariana");
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setBounds(100, 100, 450, 300);
	contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	setContentPane(contentPane);
	contentPane.setLayout(null);
	
	JButton btnCliente = new JButton("Cliente");
	btnCliente.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			new ClienteJFrame().setVisible(true);
		}
	});
	btnCliente.setForeground(Color.BLUE);
	btnCliente.setBounds(23, 38, 89, 23);
	contentPane.add(btnCliente);
	
	JButton btnPedido = new JButton("Pedido");
	btnPedido.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			new PedidoJFrame().setVisible(true);
		}
	});
	btnPedido.setForeground(Color.RED);
	btnPedido.setBounds(23, 86, 89, 23);
	contentPane.add(btnPedido);
	
	JButton btnVideogame = new JButton("VideoGame");
	btnVideogame.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			new VideoGameJFrame().setVisible(true);
		}
	});
	btnVideogame.setForeground(Color.GREEN);
	btnVideogame.setBounds(23, 133, 89, 23);
	contentPane.add(btnVideogame);
}

}
[/code]

e essa é uma das telas que abro a partir de um dos botões da tela:

[code]package swing;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Color;

public class ClienteJFrame extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;

/**
 * Launch the application.
 */
public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				ClienteJFrame frame = new ClienteJFrame();
				frame.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}

/**
 * Create the frame.
 */
public ClienteJFrame() {
	setTitle("Cliente");
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setBounds(100, 100, 450, 300);
	contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	setContentPane(contentPane);
	contentPane.setLayout(null);
	
	JLabel lblNome = new JLabel("Nome:");
	lblNome.setBounds(25, 59, 46, 14);
	contentPane.add(lblNome);
	
	textField = new JTextField();
	textField.setBounds(134, 56, 86, 20);
	contentPane.add(textField);
	textField.setColumns(10);
	
	textField_1 = new JTextField();
	textField_1.setBounds(134, 98, 86, 20);
	contentPane.add(textField_1);
	textField_1.setColumns(10);
	
	JLabel lblTelefone = new JLabel("Telefone:");
	lblTelefone.setBounds(25, 101, 63, 14);
	contentPane.add(lblTelefone);
	
	JButton btnOk = new JButton("OK");
	btnOk.setForeground(Color.RED);
	btnOk.setBounds(23, 151, 89, 23);
	contentPane.add(btnOk);
}

}
[/code]

o que acham?

olá, sou usuario novo neste forum mais não entende onde a amiga ai quis chegar, bem não me leve a mal sou estudante a apenas 5 meses e nao tenho muita familiaridade com esta linguagem mas eu gostaria de saber como faço para abrir uma outra gui atraves de uma que tenha um botão que implemente este evento.

[quote=vermais java]olá, sou usuario novo neste forum mais não entende onde a amiga ai quis chegar, bem não me leve a mal sou estudante a apenas 5 meses e nao tenho muita familiaridade com esta linguagem mas eu gostaria de saber como faço para abrir uma outra gui atraves de uma que tenha um botão que implemente este evento.

[/quote]


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     new clientes().setVisible(true);
    } 

Se alguem poder me ajudar eu ficarei muito feliz, estou construindo um banco de dados.
onde os links que refrerente a:

{clientes}
{fornecedor}
{produtos}
{contas a pagar}
{contas a receber}
{consulta}
{agendamentos}

devem abrir as suas respectivas janelas em um Jpainel ao lado não sei como fazer isso? bem cheguei a imaginar que um botão implementase um actionperformed que chamase essa janela e lançando-a para o nome do painel, que tivese cido add njo centro do JFrame.

JButton btnCliente = new JButton(“Cliente”);
btnCliente.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
new ClienteJFrame().setVisible(true ( :arrow: acho que o codigo extra entra aqui :!: );
// um código que envie a janela para o centro da moudura central
}

Olha eu sei muito pouco sobre o java. tudo o que ja li sobre esta linguagem foi um livro univerço java a mais de 2 anos so a 5 meses que realmente decide entra de cabeça nesta tecnologia. o livro que estou terminando de estudar e usando a cabeça java que ja estou a 5 meses.

Se alguem poder me ajudar eu ficarei muito feliz, estou construindo um banco de dados.
onde os links que refrerente a:

{clientes}
{fornecedor}
{produtos}
{contas a pagar}
{contas a receber}
{consulta}
{agendamentos}

devem abrir as suas respectivas janelas em um Jpainel ao lado não sei como fazer isso? bem cheguei a imaginar que um botão implementase um actionperformed que chamase essa janela e lançando-a para o nome do painel, que tivese cido add njo centro do JFrame.

JButton btnCliente = new JButton(“Cliente”);
btnCliente.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
new ClienteJFrame().setVisible(true ( acho que o codigo extra entra aqui );
// um código que envie a janela para o centro da moudura central
}

Olha eu sei muito pouco sobre o java. tudo o que ja li sobre esta linguagem foi um livro univerço java a mais de 2 anos so a 5 meses que realmente decide entra de cabeça nesta tecnologia. o livro que estou terminando de estudar e usando a cabeça java que ja estou a 5 meses.

Obrigado pela resposta, muito obrigado!

Oi vermais java,

Não entendi bem sua duvida,espero que isso ajude…

[youtube]http://www.youtube.com/watch?v=Vr-hT3dzbLQ[/youtube]

obs:Na aula fala para colocar esse código…[code]

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

new clientes().show();  // O metodo show não é mais usado

}

// Por favor substitua por esse exemplo abaixo:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

new clientes().setVisible(true);

}

[/code]

Boa sorte!

:arrow: obrigado por me ajudar mas vou tentar formular melhor minha pergunta. em html podemos criar um:

FrameLeft
FrameRigth
FrameMain

Se no FrameLeft tiver botoes eu posso fazer com que eles abrão o arquivo que eles estão relacionado em qualquer Frame

mas no java temos

FrameTopo
JFrameDireita
FrameCentro
FrameEsquerda
FrameBaixo

Casso eu adicione um painel que contenha varios botoes ao FrameEsquerdo como eu… fariamos para que ele bém, exiba a janala ale no FrameCentro?

Espero ter expresado minha necessidade :roll: