781
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re:botones en java
« en: 21 de Julio 2019, 22:56 »
Hola.
Tienes que crear un ActionListener para que el botón responda.
Puedes hacerlo creando una clase anidada dentro de la clase principal.
La clase que vas a crear ha de heredar de la clase ActionListener. AL heredar de esta clase, se ha implementar obligatoriamente un método llamado actionPerformed().
Dentro de este método, es donde vamos a escribir qué queremos que ocurra cuando se pulse el botón.
Aquí te pongo un ejemplo donde simplemente se muestran mensajes JOptionPane para informar si los datos de usuario y contraseña son correctos.
Ahí es donde deberías crear la otra ventana que se pide mostrar con una foto y no se que más.
Una vez has escrito esta clase, tienes que instanciar un objeto de ella y añadírsela al botón correspondiente:
Así, cuando se pulse ese botón, se ejecutará el código escrito en la clase ActionListener que hemos escrito.
Te pego aquí el código completo.
He hecho un par de cambios menores. Para los textos de "Usuario" y "Contraseña" he usado dos JLabel en lugar de los JTexField.
Les he puesto fondo opaco y blanco para que se pueda ver sobre el fondo azul que pusiste.
También he cambiado el sitio donde declaras los String del nombre de usuario y contraseña correctos.
Tu los declaraste dentro del método initialize() pero ahí no servirá porque en cuanto ese método termine, esos String "morirán" junto con el método.
Los he puesto como atributo de clase, así siempre existirán mientras se esté ejecutando el programa.
También he quitado varios import que son totalmente innecesarios, al menos en el estado actual del programa.
Señalo en negrita los cambios:
Tienes que crear un ActionListener para que el botón responda.
Puedes hacerlo creando una clase anidada dentro de la clase principal.
La clase que vas a crear ha de heredar de la clase ActionListener. AL heredar de esta clase, se ha implementar obligatoriamente un método llamado actionPerformed().
Dentro de este método, es donde vamos a escribir qué queremos que ocurra cuando se pulse el botón.
Aquí te pongo un ejemplo donde simplemente se muestran mensajes JOptionPane para informar si los datos de usuario y contraseña son correctos.
Ahí es donde deberías crear la otra ventana que se pide mostrar con una foto y no se que más.
Citar
class AccionBotonOK implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String pass=new String(Password.getPassword());
if(User.getText().equals(usuario)&& pass.equals(contraseña)){
JOptionPane.showMessageDialog(null, "Datos login aceptados",
"Login Usuario", JOptionPane.INFORMATION_MESSAGE);
}
else {
JOptionPane.showMessageDialog(null, "Datos login rechazados",
"Login Usuario", JOptionPane.WARNING_MESSAGE);
}
}
}
Una vez has escrito esta clase, tienes que instanciar un objeto de ella y añadírsela al botón correspondiente:
Citar
JButton btnOk = new JButton("OK");
btnOk.setBounds(135, 182, 89, 23);
btnOk.addActionListener(new AccionBotonOK());
frame.getContentPane().add(btnOk);
Así, cuando se pulse ese botón, se ejecutará el código escrito en la clase ActionListener que hemos escrito.
Te pego aquí el código completo.
He hecho un par de cambios menores. Para los textos de "Usuario" y "Contraseña" he usado dos JLabel en lugar de los JTexField.
Les he puesto fondo opaco y blanco para que se pueda ver sobre el fondo azul que pusiste.
También he cambiado el sitio donde declaras los String del nombre de usuario y contraseña correctos.
Tu los declaraste dentro del método initialize() pero ahí no servirá porque en cuanto ese método termine, esos String "morirán" junto con el método.
Los he puesto como atributo de clase, así siempre existirán mientras se esté ejecutando el programa.
También he quitado varios import que son totalmente innecesarios, al menos en el estado actual del programa.
Señalo en negrita los cambios:
Citar
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import java.awt.Color;
public class Contraseña {
private JFrame frame;
private JTextField User;
private JPasswordField Password;
private JLabel txtContrasea;
private JLabel txtUsuario;
//Datos login
private String usuario="santiago";
private String contraseña="1234";
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Contraseña window = new Contraseña();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Contraseña() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.getContentPane().setBackground(new Color(0, 0, 205));
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
User = new JTextField();
User.setBounds(135, 31, 180, 20);
frame.getContentPane().add(User);
User.setColumns(10);
Password = new JPasswordField();
Password.setBounds(135, 80, 180, 20);
frame.getContentPane().add(Password);
txtContrasea = new JLabel();
txtContrasea.setBackground(Color.WHITE);
txtContrasea.setOpaque(true);
txtContrasea.setText("Contrase\u00F1a");
txtContrasea.setBounds(10, 80, 86, 20);
frame.getContentPane().add(txtContrasea);
txtUsuario = new JLabel();
txtUsuario.setBackground(Color.WHITE);
txtUsuario.setOpaque(true);
txtUsuario.setText("Usuario");
txtUsuario.setBounds(10, 31, 86, 20);
frame.getContentPane().add(txtUsuario);
JButton btnOk = new JButton("OK");
btnOk.setBounds(135, 182, 89, 23);
btnOk.addActionListener(new AccionBotonOK());
frame.getContentPane().add(btnOk);
}
/*
* Aquí programamos lo que queremos que ocurra cuando se
* pulse el boton OK
*/
class AccionBotonOK implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String pass=new String(Password.getPassword());
if(User.getText().equals(usuario)&& pass.equals(contraseña)){
JOptionPane.showMessageDialog(null, "Datos login aceptados",
"Login Usuario", JOptionPane.INFORMATION_MESSAGE);
}
else {
JOptionPane.showMessageDialog(null, "Datos login rechazados",
"Login Usuario", JOptionPane.WARNING_MESSAGE);
}
}
}
}