Container, FlowLayout, BorderLayout, GridLayout

Olá pessoal, alguém poderia me ajudar nestes conceitos… encontrei várias apostilas e textos explicando, mas nenhum ajudou na hora da prática…

Fiz o código abaixo, porém, meus Labels, Botões…e demais compoenente estão aparecendo tudo misturado na tela…

[code]class Janela extends JFrame{

//Labels
JLabel label1 = new JLabel("PROGRAMA");
JLabel label2 = new JLabel("Registradores");
JLabel label3 = new JLabel("0");
JLabel label4 = new JLabel("1");
JLabel label5 = new JLabel("2");
JLabel label6 = new JLabel("3");
JLabel label7 = new JLabel("PC");

//Caixa de Texto
JTextField reg1 = new JTextField(5);
JTextField reg2 = new JTextField(5);
JTextField reg3 = new JTextField(5);
JTextField reg4 = new JTextField(5);
JTextField reg5 = new JTextField(5);

//Botões
JButton bt1 = new JButton("Próximo Passo");
JButton bt2 = new JButton("Carregar...");

//Componente para visualizar "Programa"
JPanel j = new JPanel();



public Janela() throws Exception{
	Container c = getContentPane();

// c.setLayout (new FlowLayout(30,3,30));
c.setLayout(new GridLayout(0,2,0,2));
// c.setLayout(new BorderLayout());

	//Título e Dimensão da Janela
	setTitle("Janela Teste");
	setSize(800,600);
	setLocation(200,100);
	
	c.add(label1);
	label1.setHorizontalTextPosition(SwingConstants.LEFT);
	c.add(new JScrollPane(j));

	

	
	JTextArea t = new JTextArea ();//linha,100,60);
			
	j.add(t);			
	
	c.add (label2); 
	c.add (label3); c.add(reg1);
	c.add(label4); c.add(reg2);
	c.add(label5); c.add(reg3);
	c.add(label6); c.add(reg4);
	c.add(label7); c.add(reg5);
	
	c.add(bt1);
	c.add(bt2);
}

}
[/code]

Quer trabalhar com layout fazendo códigos na unha?
USE O MIGLAYOUT!!!

Para de usar esses layouts… O mig é o melhor layout pra trabalhar com coisas na unha, e é bem facil de ser utilizado

[quote=pedroroxd]Quer trabalhar com layout fazendo códigos na unha?
USE O MIGLAYOUT!!!

Para de usar esses layouts… O mig é o melhor layout pra trabalhar com coisas na unha, e é bem facil de ser utilizado[/quote]

Resumidamente, como ele funciona pedroroxd?

O que voce acha melhor: Programar utilizando NetBeans e seu sistema de layout padrao ou usar esse miglayout e programar na unha?

Abraços

olá…obrigado pedroroxd

se puder me ajudar em alguns exemplos vou agradecer…até…

Bom, eu usava netbeans pra fazer tudo…
Então eu fui trabalhar numa empresa, e eles me passaram um projeto… Feito em eclipse…

Não entendi porra nenhuma, fikei perdidinho…
Então tive que aprender como funciona.

Realidade:
Quem programa só em netbeans, quando pega um projeto em eclipse fica perdidinho.
Quem programa em eclipse sabe programar em netbeans.
O netbeans gera uma porrada de porcaria no seu código, deixando ele praticamente ilegivel se vc tentar ler sua classe inteira.

Então comecei a usar o eclipse, e confesso que fikei viciado nele…
Quando programava no netbeans, só usando o drag and drope, se vc falasse para mim: Gere uma telinha, que mostre um botão nela, e quando apertar nesse botão exiba uma mensagem.
Eu não saberia fazer sem ser no drag and drope, tendo que fazer “extends jframe”, “set title”, “add …”

E como Eclipse é a IDE mais usada nas empresas, não tem como vc ficar sem entende-la…

VAI ABAIXO UM EXEMPLO DE PROJETOS, 1 FEITO EM NETBEANS E OUTRO EM ECLIPSE (TEM A MESMA FUNÇÃO)

Bom, tá ae os exemplos, eles só exibem num joptionpane o que foi escrito em um jtextfield.
Rode os 2 na sua máquina

Feito em netbeans:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/*

  • NewJFrame.java
  • Created on 09/05/2010, 22:52:55
    */

package javaapplication9;

import javax.swing.JOptionPane;

/**
*

  • @author Pedro
    */
    public class NewJFrame extends javax.swing.JFrame {

    /** Creates new form NewJFrame */
    public NewJFrame() {
    setTitle(“Net Beans sux.”);
    setLocationRelativeTo(null);
    initComponents();
    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      @SuppressWarnings(“unchecked”)
      //
      private void initComponents() {

      jLabel1 = new javax.swing.JLabel();
      jLabel2 = new javax.swing.JLabel();
      jTextField1 = new javax.swing.JTextField();
      jButton1 = new javax.swing.JButton();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jLabel1.setText(“Bem Vindo ao Programa utilizando a merda do NetBeans”);

      jLabel2.setText(“Digite algo aqui:”);

      jButton1.setText(“Mostrar”);
      jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      jButton1ActionPerformed(evt);
      }
      });

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 270, Short.MAX_VALUE)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
      .addGroup(layout.createSequentialGroup()
      .addComponent(jLabel2)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 131, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
      .addContainerGap())
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jLabel1)
      .addGap(28, 28, 28)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jLabel2)
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(23, 23, 23)
      .addComponent(jButton1)
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      );

      pack();
      }//

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    JOptionPane.showMessageDialog(null, jTextField1.getText());
    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new NewJFrame().setVisible(true);
      }
      });
      }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration

}[/code]

Mesmo projeto feito em eclipse:

[code]import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import net.miginfocom.swing.MigLayout;

public class Example extends JFrame {

private JLabel _jLabelBemVindo;
private JLabel _jLabelDigite;
private JTextField _jTextDigite;
private JButton _jbtnBut;

public Example() {
	setTitle("Mig Layout Rox");
	setLayout(new MigLayout()); // aqui está a mágica!
	setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	instaciarComponentes();
	add(_jLabelBemVindo, "span");
	add(_jLabelDigite, "gaptop 20");
	add(_jTextDigite, "span");
	add(_jbtnBut, "grow,span");
	pack();
	setLocationRelativeTo(null);
}

private void instaciarComponentes() {
	_jLabelDigite = new JLabel("Digite algo aqui:");
	_jTextDigite = new JTextField(14);

	_jbtnBut = new JButton("Mostrar");
	_jbtnBut.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			JOptionPane.showMessageDialog(null, _jTextDigite.getText());
		}
	});

	_jLabelBemVindo = new JLabel("Bem Vindo ao programa utilizando Mig Layout.");
}

public static void main(String args[]) {
	new Example().setVisible(true);
}

}[/code]

Deu pra perceber o tanto de porcariada que o netbeans colocou no seu projeto…
No eclipse para qualquer mudança que você queira fazer, fica fácil mexer no seu código, vc tem controle, pois foi VOCÊ QUE FEZ TUDO.
Fora o código ilegível que o netbeans gera nakela parte:

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( .. .. ..

E essa é a razão por eu só usar o eclipse até hoje. /\

Valeu Pessoal…grato…

pedroroxd, vou testar e depois dou retorno, caso tenha mais dificuldades…vlw mesmo… :smiley:

Deu um certo erro neste import:

Baixou o Jar no site do MigLayout para colocar no class-path?

E não tenho certeza, mas parece que o MigLayout vai ir junto com os pacotes padrões do Java 7.

Baixe ele aqui
Dá uma estudada sobre como funciona ele, o posicionamento de componentes no add, como esses que eu colokei:

add(_jLabelBemVindo, "span"); add(_jLabelDigite, "gaptop 20"); add(_jTextDigite, "span"); add(_jbtnBut, "grow,span");
Bons estudos, flw

é tá dificil… não encontrei este arquivo para baixar… e assim vou indo…

Qual link é dentre tantos que tem na página?

Como proceder na instalação…??

Esta área tem poucas explicações do assunto…eta…

Fico feliz de ver que cada vez mais usuários usam o MigLayout.Há uma diferença estelar dele para os demais principalmente se vc irá fazer bons forms.
Seria interessante depois alguém fazer um tutorial beem completo com bons exemplos de miglayout aqui para guj.Apesar de cada vez mais adotado, ainda se encontram mais exemplos(BONS) de FormsLayout(um poucoultrapassado) do que do MigLayout.
Se não estivesse com os probleminhas chatos aqui(a máquina do tio Iron tá indo para o Céu das máquinas…rsrsrs) eu me habilitaria.

pedro, consegui sim…

agora entendi a budega aqui…

porém, só estou apanhando muito com a localização dos componentes…

tem algum exemplo para isso, fora aquele tutorial em inglês??

até…

[quote=Ironlynx]Fico feliz de ver que cada vez mais usuários usam o MigLayout.Há uma diferença estelar dele para os demais principalmente se vc irá fazer bons forms.
Seria interessante depois alguém fazer um tutorial beem completo com bons exemplos de miglayout aqui para guj.Apesar de cada vez mais adotado, ainda se encontram mais exemplos(BONS) de FormsLayout(um poucoultrapassado) do que do MigLayout.
Se não estivesse com os probleminhas chatos aqui(a máquina do tio Iron tá indo para o Céu das máquinas…rsrsrs) eu me habilitaria.[/quote]

Eu também já pensei em fazer um assim, mas o tempo ficou curto.

[quote=denpr2005]pedro, consegui sim…

agora entendi a budega aqui…

porém, só estou apanhando muito com a localização dos componentes…

tem algum exemplo para isso, fora aquele tutorial em inglês??

até…[/quote]
Ex.:

JPanel panel = new JPanel(new MigLayout()); panel.add(firstNameLabel); panel.add(firstNameTextField); panel.add(lastNameLabel, "gap unrelated"); panel.add(lastNameTextField,"wrap"); panel.add(addressLabel); panel.add(addressTextField,"span, grow");

Geralmente são esses que vc vai usar…
primeiro vc faz o add do componente, e depois coloca uma virgula, e passa uma string, sobre a posição
gaptop10: 10 pixels de espaço para cima
gapleft10: 10 pixels de espaço da esquerda para direita
gapright10: 10 pixels de espaço da direita para esquerda
gaplbotton10: 10 pixels de espaço para baixo

vc pode usar mais de um dentro do “” tipo assi:
“span, grow” : ele vai ocupar a o resto da linha inteiro e o proximo componente que for inserido, quebra a linha (como acontece com o ultimo jtextfield da imagem acima)
“span, center”: coloca ele no centro, e o proximo componente que for add quebra a linha
"wrap": quebra a linha
"span, grow, gaptop10,gapbottn10: Tenta adivinhar… kkkk

Esses são os essenciais… Tem outros tb

[quote=pedroroxd][quote=denpr2005]pedro, consegui sim…

agora entendi a budega aqui…

porém, só estou apanhando muito com a localização dos componentes…

tem algum exemplo para isso, fora aquele tutorial em inglês??

até…[/quote]
Ex.:

JPanel panel = new JPanel(new MigLayout()); panel.add(firstNameLabel); panel.add(firstNameTextField); panel.add(lastNameLabel, "gap unrelated"); panel.add(lastNameTextField,"wrap"); panel.add(addressLabel); panel.add(addressTextField,"span, grow");

Geralmente são esses que vc vai usar…
primeiro vc faz o add do componente, e depois coloca uma virgula, e passa uma string, sobre a posição
gaptop10: 10 pixels de espaço para cima
gapleft10: 10 pixels de espaço da esquerda para direita
gapright10: 10 pixels de espaço da direita para esquerda
gaplbotton10: 10 pixels de espaço para baixo

vc pode usar mais de um dentro do “” tipo assi:
“span, grow” : ele vai ocupar a o resto da linha inteiro e o proximo componente que for inserido, quebra a linha (como acontece com o ultimo jtextfield da imagem acima)
“span, center”: coloca ele no centro, e o proximo componente que for add quebra a linha
"wrap": quebra a linha
"span, grow, gaptop10,gapbottn10: Tenta adivinhar… kkkk

Esses são os essenciais… Tem outros tb

[/quote]