Problema com container

4 respostas
A

tenho dois Buttons e um TextArea. Quero que o TextArea fique debaixo dos buttons, mas ele está ficando do lado :sad:

segue meu código:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonImage extends JFrame{
//página 607
	private JButton plainbutton, fancybutton;
	private JLabel credits;
	private JTextArea texto;
	
	//configura a GUI
	public ButtonImage(){
		super("Testando Botões");
		
		//obtém painel de conteúdo e configura o layout
		Container container = getContentPane();
		container.setLayout(new FlowLayout());
		
		//cria botões
		plainbutton = new JButton ("Créditos");
		container.add(plainbutton);
		
		Icon bug1 = new ImageIcon("bug1.gif");
		Icon bug2 = new ImageIcon("bug2.gif");
		fancybutton = new JButton ("Home", bug1);
		container.add(fancybutton);
		
		Box box = Box.createHorizontalBox();                         // Começa aqui o TextArea
		texto = new JTextArea("Alguma coisa", 10, 15);
		box.add(new JScrollPane(texto));
		container.add(box);                                          // Aqui coloco o TextArea no container
		
		
		creditos handler = new creditos();
		plainbutton.addActionListener(handler);
		
		hommer handle = new hommer();
		fancybutton.addActionListener(handle);
		
		//JLabel
		Icon avatar = new ImageIcon("avatar.gif");
		credits = new JLabel();
	        credits.setText("<html><u>Nome</u>
                <br>Cidade<br>Data</html>");
		credits.setIcon(avatar);
		credits.setHorizontalTextPosition(SwingConstants.RIGHT);
		credits.setToolTipText("Minha Biografia");
		container.add(credits);
		
		setSize(400, 500);
		setVisible(true);
	}
	
	public static void main(String args[]){
		ButtonImage application = new ButtonImage();
		
		application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	private class creditos implements ActionListener{
		public void actionPerformed(ActionEvent event){
			JOptionPane.showMessageDialog(null, "Programa feito em Java! =)","Créditos", JOptionPane.INFORMATION_MESSAGE);
		}
	}	
	private class hommer implements ActionListener{
		public void actionPerformed(ActionEvent event){
			JOptionPane.showMessageDialog(null, "Você clicou em Home!!!", "Atenção!", JOptionPane.WARNING_MESSAGE);
		}
	}	
	
	}

Alguém pode me dizer onde está o problema no código, e como arrumar?

Desde já obrigado

4 Respostas

J

Olha, não tenho certeza, mas acho que vc usando um layout vc não conseguirá isso, tente:

container.setLayout(null);

até mais!

A

Eu fiz o que vc me falou mas daí o programa sai todo em branco, não aparecenenhum botão nem textarea.

I

O seu problema é de Layout mesmo.
Se você quizer usar setLayout(null),
você tem que especificar as coordenadas
de cada elemento quando for adicionar eles
no container. Talvez pra você deva
ser melhor usar “GridBagLayout”.
Da uma estudada nos tipos de layouts.

L

Boas,

Eu uso o SpringLayout, voce faz assim :

SpringLayout layout = new SpringLayout() ;
 JLabel teste = new JLabel( "Teste de um Jlabel !" );
      layout.putConstraint (SpringLayout.WEST, teste,
           7,
           SpringLayout.WEST, getContentPane()) ) ;
     layout.putConstraint(SpringLayout.NORTH, teste,
           17,
           SpringLayout.NORTH, getContentPane()) ;
   //Adiciona o label ao container
      container.add( teste ) ;

Com este layout voce pode colocar os objectos aonde voce bem entender,
depois me diga se funcionou ou se voce tem alguma duvida.

:slight_smile:

Criado 9 de julho de 2006
Ultima resposta 9 de jul. de 2006
Respostas 4
Participantes 4