Java - Deshabilitar JButton

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Deshabilitar JButton

Publicado por guille (14 intervenciones) el 06/04/2016 04:18:17
Buenas noches, 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 se:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Deshabilitar JButton

Publicado por yamil bracho (2315 intervenciones) el 06/04/2016 20:20:22
Nunca compare sString (u otros objectos) con el operador ==. Usa el metodo equals. te quedaria esto :

if ("Agregar".equals(source.getText()) {

Editar();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Deshabilitar JButton

Publicado por guille (14 intervenciones) el 06/04/2016 20:23:15
Mil gracias Yamil, ya lo modifiqué, pero el if lo ejecutaba bien (mejor ahora supongo),
el error lo dá en el btnAgregar.setEnabled(false); del metodo Editar()

Nuevamente te agradezco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Deshabilitar JButton

Publicado por yamil bracho (2315 intervenciones) el 06/04/2016 22:11:07
Ah, ok..
El problema es que en el metodo MarcasArt defines el boton como una variable local. Es decir tienes

JButton btnAgregar = ...
Y deberia ser
btnAgregar = new JButton(....)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Deshabilitar JButton

Publicado por guille (14 intervenciones) el 07/04/2016 18:41:34
Buenas tardes Yamil, funcionó a la perfección.
Muchas gracias nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar