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.