Bom dia pessoal, estou com uma dúvida de qual seria a melhor forma de implementar está minha arquitetura.
Vamos la!!!
Estou fazendo uma pequena aplicação, onde eu tenho a minha tela de login, dentro desta tela de login existem 3 componentes entre eles está o meu botão de entrar, nele eu adiciono um actionListener, a minha dúvida é a seguinte, o que eu devo passar para este actionListener ? Eu estou pensando em passar o JFrame inteiro e dentro dele eu separo os dados da tela e mando eles para a controler da tela de login. Não sei se ficou clara a ideia, mais o que vcs acham dela ? Qual seria a melhor forma de implementar ?
Vou colocar o code aqui:
Tela de login:
package videolocadora.helio.gui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRootPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;
import videolocadora.helio.JavaSource.infra.msg.MensagensExceptionEnum;
import videolocadora.helio.gui.action.LoginEntradaActionListener;
import videolocadora.helio.gui.componentes.UpperCaseTextField;
import com.birosoft.liquid.LiquidLookAndFeel;
public class LoginGui extends JFrame{
/**
* Atributo referenta a criação do painel principal
*/
private JPanel painelCentralView;
public LoginGui() {
alteraLayout();
painelCentralView = new JPanel();
painelCentralView.setLayout(null);
JLabel teste = new JLabel(new ImageIcon("src/videolocadora/helio/gui/image/imageLogo.png"));
teste.setBounds(0, 0, 90, 140);
JLabel teste2 = new JLabel(new ImageIcon("src/videolocadora/helio/gui/image/textLogo.png"));
teste2.setBounds(230, 10, 150, 30);
JLabel login = new JLabel("Usuário:");
login.setBounds(100, 50, 50, 20);
JLabel senha = new JLabel("Senha:");
senha.setBounds(100, 80, 50, 20);
JTextField loginField = new UpperCaseTextField(10);
loginField.setBorder(new LineBorder(new Color(54,166,229)));
loginField.setBackground(new Color(20,65,150));
loginField.setForeground(new Color(0xffffff));
loginField.setFont(new Font ("Serif", Font.PLAIN, 12));
loginField.setBounds(160, 50, 150, 20);
JPasswordField senhaField = new JPasswordField();
senhaField.setBorder(new LineBorder(new Color(54,166,229)));
senhaField.setBackground(new Color(20,65,150));
senhaField.setForeground(new Color(0xffffff));
senhaField.setBounds(160, 80, 150, 20);
JButton botaoEntrar = new JButton("ENTRAR");
botaoEntrar.addActionListener(new LoginEntradaActionListener(this));
botaoEntrar.setBounds(180, 115, 90, 20);
painelCentralView.add(login);
painelCentralView.add(senha);
painelCentralView.add(loginField);
painelCentralView.add(senhaField);
painelCentralView.add(teste2);
painelCentralView.add(teste);
painelCentralView.add(botaoEntrar);
painelCentralView.setBackground(Color.WHITE);
setSize(new Dimension(400,170));
setLocationRelativeTo(null);
setTitle("Helio");
add(painelCentralView);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* Método responsável por setar o layout no estilo MAC.
*/
private void alteraLayout(){
try {
setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
UIManager.setLookAndFeel(new com.birosoft.liquid.LiquidLookAndFeel());
LiquidLookAndFeel.setLiquidDecorations(true,"mac");
LiquidLookAndFeel.setShowTableGrids(true);
LiquidLookAndFeel.setStipples(false);
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, MensagensExceptionEnum.ERRO_CARREGAR_LAYOUT_APLICAÇÃO, "ERRO", JOptionPane.ERROR);
}
}
public static void main(String[] args) {
LoginGui teste = new LoginGui();
}
}
Classe de Ação
package videolocadora.helio.gui.action;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class LoginEntradaActionListener implements ActionListener{
private JFrame main;
public LoginEntradaActionListener(JFrame main) {
this.main = main;
}
public void actionPerformed(ActionEvent e) {
main.dispose();
}
}
PS: Não liguem para o codigo zuado, estou só fazendo uns testes.