Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Deshabilitar Botones

Buenos días, estoy aprendiendo a programar en java y encuentro el siguiente problema al intentar desarrollar un formulario.
Lo que deseo es que al presionar el botón btnAgregar, de deshabiliten (supongo setEnable(false)) algunos botones.
Lo que sucede al hacer click es que dá el siguiente error: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

El código es:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
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.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.JList;
import javax.swing.ImageIcon;
import javax.swing.*;

public class MarcasArt extends JFrame implements ActionListener {
public JButton btnSalir,btnAgregar,btnModificar,btnEliminar,btnCancelar,btnAceptar;
public JPanel contentPane;


public static void main(String[] args) {

MarcasArt frame = new MarcasArt();
frame.setTitle("Marcas");
frame.setVisible(true);


}

public MarcasArt() {


setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 630);
setLocationRelativeTo(null);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);


JButton btnAgregar = new JButton("Agregar");
btnAgregar.setBounds(10, 500, 80, 80);
contentPane.add(btnAgregar);
btnAgregar.addActionListener(this);


JButton btnModificar = new JButton("Modificar");
btnModificar.setBounds(120, 500, 80, 80);
contentPane.add(btnModificar);

JButton btnEliminar = new JButton("Eliminar");
btnEliminar.setBounds(230, 500, 80, 80);
contentPane.add(btnEliminar);

JButton btnAceptar = new JButton("Aceptar");
btnAceptar.setBounds(400, 500, 80, 80);
contentPane.add(btnAceptar);
btnAceptar.setVisible(false);

JButton btnCancelar = new JButton("Cancelar");
btnCancelar.setBounds(510, 500, 80, 80);
contentPane.add(btnCancelar);
btnCancelar.setVisible(false);

JButton btnSalir = new JButton("Salir");
btnSalir.setBounds(670, 500, 80, 80);
contentPane.add(btnSalir);
btnSalir.addActionListener(this);
}

public void Editar(){

btnAgregar.setEnabled(false);
btnModificar.setEnabled(false);
btnEliminar.setEnabled(false);
btnAceptar.setVisible(true);
btnCancelar.setVisible(true);
btnSalir.setEnabled(false);

}//FIN DE METODO EDITAR

public void noEditar(){

btnAgregar.setEnabled(true);
btnModificar.setEnabled(true);
btnEliminar.setEnabled(true);
btnAceptar.setVisible(false);
btnCancelar.setVisible(false);
btnSalir.setEnabled(true);

}//FIN DE METODO EDITAR



public void actionPerformed(ActionEvent e) {

JButton source = (JButton) e.getSource();
if (source.getText()=="Salir") {
System.exit(0);
}
if (source.getText()=="Agregar") {
Editar();

}


}
}//FIN CLASE MarcasArt

Mi intensión es que al pulsar el botón se ejecute el método editar, que luego también será llamado por otras acciones y se ejecutaran otras instrucciones además de des habilitar los botones.

Desde ya muchas gracias

abril 6, 2016 | Registered Commenterguille107

"Salir".equals(source.getText()
y lo mismo para la otra comparación.
El operador == no se debe usar para comprobar si dos cadenas son idénticas

https://docs.oracle.com/javase/tutorial/java/data/comparestrings.html

abril 6, 2016 | Registered Commenterchoces

Mil gracias Choces, ya lo modifiqué, pero el if lo ejecutaba bien (mejor ahora supongo), el error lo dá en el btnAgregar.setEnabled(true);

Nuevamente te agradezco.

abril 6, 2016 | Unregistered Commenterguille107

Perdón, el error lo dá en el btnAgregar.setEnabled(false);

abril 6, 2016 | Unregistered Commenterguille107

Te copio todo el código corregido. El principal problema es que declaras los botones como propiedades de la clase, sin embargo los vuelves a declarar, y asignar, como variables locales al constructor, por lo que las propiedades son siempre null, y de ahí la excepción.


public class MarcasArt extends JFrame implements ActionListener {

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
MarcasArt frame = new MarcasArt();
frame.setTitle("Marcas");
frame.setVisible(true);
}
});

}

private final JButton btnSalir, btnAgregar, btnModificar, btnEliminar, btnCancelar, btnAceptar;
private final JPanel contentPane;

public MarcasArt() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 630);
setLocationRelativeTo(null);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);

btnAgregar = new JButton("Agregar");
btnAgregar.setBounds(10, 500, 80, 80);
contentPane.add(btnAgregar);
btnAgregar.addActionListener(MarcasArt.this);

btnModificar = new JButton("Modificar");
btnModificar.setBounds(120, 500, 80, 80);
contentPane.add(btnModificar);

btnEliminar = new JButton("Eliminar");
btnEliminar.setBounds(230, 500, 80, 80);
contentPane.add(btnEliminar);

btnAceptar = new JButton("Aceptar");
btnAceptar.setBounds(400, 500, 80, 80);
contentPane.add(btnAceptar);
btnAceptar.setVisible(false);

btnCancelar = new JButton("Cancelar");
btnCancelar.setBounds(510, 500, 80, 80);
contentPane.add(btnCancelar);
btnCancelar.setVisible(false);

btnSalir = new JButton("Salir");
btnSalir.setBounds(670, 500, 80, 80);
contentPane.add(btnSalir);
btnSalir.addActionListener(MarcasArt.this);
}

public void editar() {

btnAgregar.setEnabled(false);
btnModificar.setEnabled(false);
btnEliminar.setEnabled(false);
btnAceptar.setVisible(true);
btnCancelar.setVisible(true);
btnSalir.setEnabled(false);

}//FIN DE METODO EDITAR

public void noEditar() {

btnAgregar.setEnabled(true);
btnModificar.setEnabled(true);
btnEliminar.setEnabled(true);
btnAceptar.setVisible(false);
btnCancelar.setVisible(false);
btnSalir.setEnabled(true);

}//FIN DE METODO EDITAR

@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
JButton source = (JButton) e.getSource();
if ("Salir".equals(source.getText())) {
System.exit(0);
}
if ("Agregar".equals(source.getText())) {
editar();

}
}

}//FIN CLASE MarcasArt

abril 6, 2016 | Registered Commenterchoces

Muchas Gracias Choces.
Funcionó a la perfección

Saludos

abril 7, 2016 | Unregistered Commenterguille107

para habilitar y des habilitar seria
this.setEnabled(false o true);

mayo 30, 2016 | Unregistered CommenterArturo

if(eve.clicK == true){
boton1.setenable(true);
boton2.setenable(true);
boton3.setenable(true);

}

junio 13, 2016 | Unregistered CommenterArturo