Re:Duvida... exercicio 11.8 deitel 6ªedição

na linha

panel.setLayout(new FlowLayout());

acho que qr fazer

panel.setLayout(new BorderLayout());

Perguntinha: por que está adicionando os botões ao JFrame e também ao JPanel?

Sem contar que no JPanel você está usando o FlowLayout, e na hora de colocar os botões nele, está agindo como se fosse um BorderLayout.

Hmmm…acho que você está com um certo problema para entender o conceito de componente e de container. :slight_smile:

Os componentes são sempre colocados dentro de containers. E um container pode ter outros containers.

O JFrame e o JPanel são containers. Portanto, o correto seria você incluir os botões no JPanel, e esse JPanel no JFrame. Ou então, descartar o JPanel e colocar os botões direto no JFrame.

Perceba também que, para que os botões fiquem à direita no JFrame, alguma coisa deve ser colocada à esquerda! :slight_smile:

Para colocar os botões um acima do outro:

JButton button1 = new JButton("botão 1"); JButton button2 = new JButton("botão 2"); JButton button3 = new JButton("botão 3"); JPanel buttonPanel = new JPanel(new GridLayout(3, 1)); buttonPanel.add(button1); buttonPanel.add(button2); buttonPanel.add(button3);
E para colocá-los no JFrame à direita:

this.setLayout(new BorderLayout());
this.add(new JLabel("apenas ocupando espaço"), BorderLayout.CENTER);
this.add(buttonPanel, BorderLayout.EAST);

Obs.: o “this” refere-se à própria classe, onde considero que ela está estendendo a classe JFrame.

Olá pessoal…

estou tentando fazer o exercicio 11.8 do deitel 6ªedição… o problema está na hora de por os botões um encima do outro e ñ estou conseguindo achar a configuração correta… estou tentando fazer por esse código, mas os botões ñ estão saindo corretamente como deveriam…

import java.awt.GridLayout;
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.JFrame;


public class Align extends JFrame  {
	
	private JPanel panel;
	private JButton button1;
	private JButton button2;
	private JButton button3;
//	private final String names[] = {"OK","Cancel","Help"};
	private JLabel label1;
	private JLabel label2;
	private JTextField text1;
	private JTextField text2;
	private JCheckBox box1;
	private JCheckBox box2;
	
	public Align(){
		
		super("align");
		panel = new JPanel();
		panel.setLayout(new FlowLayout());
		
		button1 = new JButton("OK");
		add(button1);
			
		button2 = new JButton("Cancel");
		add(button1);
		
		button3 = new JButton("Help");
		add(button1);
		
		panel.add(button1 , BorderLayout.NORTH);
		panel.add(button2 , BorderLayout.CENTER);
		panel.add(button3 , BorderLayout.SOUTH);
		
		add(panel, BorderLayout.EAST);
		
		
	}

}

oq está errado… ?

valew pessoal…

[quote=fenrir]Perguntinha: por que está adicionando os botões ao JFrame e também ao JPanel?

Sem contar que no JPanel você está usando o FlowLayout, e na hora de colocar os botões nele, está agindo como se fosse um BorderLayout.[/quote]

ñ estou conseguindo me cituar dentro do frame… estou tentando colocar tres botões um encima do outro na direita do frame e ñ estou conseguindo…