Boa Prática ao Criar uma Gui

Pessoal, sou novato aqui no fórum e em java, e estou com uma dúvida sobre qual é a boa prática de programação quando vamos criar a gui.

por Ex.: crio todos os componentes em uma classe e depois instancio um novo objeto e a partir daí vou manipulando os componentes? ou crio os componentes(JButtons, JTextField, etc) na mesma classe onde estão os métodos?

Vlw , espero que tenham entendido minha dúvida.

Oi wilkersena, bem vindo ao forum.

Não ficou muito clara sua pergunta, seria interessante colocar algum código fonte para exemplificar a sua dúvida.

Depende muito da situação, no seu caso acredito que se os componentes estiverem onde estão os métodos (esta parte é que não ficou clara - o que seria estes métodos?) pode ficar mais fácil.

Uma idéia seria colocar em uma classe os componentes visuais, a definição dos listeners (botões) caso necessário e os métodos que executam outros métodos em um outro objeto de uma classe que descreve o que tem que ser feito. Isto seria a idéia basica de uma View e de um Controller do padrão MVC.

flws

Amigo ja oviu falar do VE um plugin do eclipse, considero que ele gera o melhor codigo para GUI segue um exemplo

package br.com.atlantica.spedsystem.view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;


public class SobreView extends JDialog
{
	private static final long	serialVersionUID	= 1L;
	private JPanel					jContentPane		= null;
	private JLabel					lblImagem			= null;
	private JLabel					lblTexto				= null;
	private JButton				btnOk					= null;

	public SobreView(Frame owner)
	{
		super(owner, true);
		initialize();
	}

	private JLabel getLblTexto()
	{
		if(lblTexto == null)
		{
			lblTexto = new JLabel();
			lblTexto.setVerticalAlignment(SwingConstants.TOP);
			lblTexto.setPreferredSize(new Dimension(397, 56));
			lblTexto.setMaximumSize(new Dimension(397, 56));
			lblTexto.setMinimumSize(new Dimension(397, 56));
			lblTexto.setText("XXXXXXXXXXXXXXXXXXXXXXXXXX");
		}
		return lblTexto;
	}

	private JPanel getJContentPane()
	{
		if(jContentPane == null)
		{
			GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
			gridBagConstraints9.insets = new Insets(6, 210, 21, 19);
			gridBagConstraints9.gridy = 2;
			gridBagConstraints9.gridx = 0;
			GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
			gridBagConstraints8.insets = new Insets(1, 0, 6, 2);
			gridBagConstraints8.gridy = 1;
			gridBagConstraints8.gridx = 0;
			GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
			gridBagConstraints7.insets = new Insets(0, 0, 0, 2);
			gridBagConstraints7.gridy = 0;
			gridBagConstraints7.gridx = 0;
			lblImagem = new JLabel();
			lblImagem.setIcon(new ImageIcon(getClass().getResource("splash.png")));
			lblImagem.setMinimumSize(new Dimension(397, 151));
			lblImagem.setMaximumSize(new Dimension(397, 151));
			lblImagem.setPreferredSize(new Dimension(397, 151));
			lblImagem.setText("");
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.insets = new Insets(32, 26, 0, 79);
			gridBagConstraints.gridy = 0;
			gridBagConstraints.gridx = 0;
			jContentPane = new JPanel();
			jContentPane.setSize(465, 267);
			jContentPane.setLayout(new GridBagLayout());
			jContentPane.setBackground(Color.WHITE);
			jContentPane.add(lblImagem, gridBagConstraints7);
			jContentPane.add(getLblTexto(), gridBagConstraints8);
			jContentPane.add(getBtnOk(), gridBagConstraints9);
		}
		return jContentPane;
	}

	private void initialize()
	{
		this.setPreferredSize(new Dimension(187, 326));
		this.setBounds(new Rectangle(0, 0, 405, 303));
		this.setResizable(false);
		this.setTitle("Sobre o XXXXXXXXXXX");
		this.setContentPane(getJContentPane());
		this.setLocationRelativeTo(null);
		this.addWindowListener(new java.awt.event.WindowAdapter()
		{
			public void windowClosing(java.awt.event.WindowEvent e)
			{
				dispose();
			}
		});
	}

	@Override
	public void dispose()
	{
		sobreView = null;
	}

	/**
	 * This method initializes btnOk
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnOk()
	{
		if(btnOk == null)
		{
			btnOk = new JButton();
			btnOk.setText("OK");
			btnOk.setPreferredSize(new Dimension(170, 30));
			btnOk.setMaximumSize(new Dimension(170, 30));
			btnOk.setMinimumSize(new Dimension(170, 30));
			btnOk.setMnemonic(KeyEvent.VK_O);
			btnOk.addActionListener(new java.awt.event.ActionListener()
			{
				public void actionPerformed(java.awt.event.ActionEvent e)
				{
					setVisible(false);
					dispose();
				}
			});
		}
		return btnOk;
	}
} 

[quote=wilkersena]Pessoal, sou novato aqui no fórum e em java, e estou com uma dúvida sobre qual é a boa prática de programação quando vamos criar a gui.

por Ex.: crio todos os componentes em uma classe e depois instancio um novo objeto e a partir daí vou manipulando os componentes? ou crio os componentes(JButtons, JTextField, etc) na mesma classe onde estão os métodos?

Vlw , espero que tenham entendido minha dúvida.[/quote]
A boa pratica é usar POO!!! Ou seja, cada caso deve ser avaliado de acordo com a situação. Mas normalmente, o mais indicado e especializar uma GUI do seu projeto. Ou seja, vc cria uma classe filha de JFrame e encapsula nela seus comportamentos e características.