0
package graficos;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

    public class MasColores extends JFrame {
    private JButton changeColorButton;
    private Color color = Color.LIGHT_GRAY;
    private Container container;

    //set up GUI constructor
    public MasColores()
    {
        super("Usando JColorChoose");
        container=getContentPane();
        container.setLayout(new FlowLayout());
        //set up BotonCambiaColor y registro del evento
        changeColorButton.addActionListener
                (
                        new ActionListener()
                        {//anonymous inner class
                            //display JColorChooser When user clicks button
                            public void actionPerformed(ActionEvent event)
                            {
                                color = JColorChooser.showDialog(
                                        MasColores.this,"Elige un color",color);
                                //set default color, if no color is returned
                                if(color==null)
                                    color=Color.LIGHT_GRAY;
                                //change content pane's background color
                                container.setBackground(color);
                            }
                        }
                );
        container.add(changeColorButton);
        setSize(400,130);
        setVisible(true);
    }
        public static void main(String[] args) {
            MasColores application = new MasColores();
            //application.setVisible(true);
            application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
}

el error que me tira es el siguiente:

Exception in thread "main" java.lang.NullPointerException at graficos.MasColores.(MasColores.java:19) at graficos.MasColores.main(MasColores.java:40)

Rafael Bautista
  • 2,603
  • 6
  • 20
  • 35
Vladimir Joel
  • 315
  • 4
  • 13

1 Answers1

2

Por lo que se ve te esta faltando instanciar el JButton (changeColorButton) por eso el programa falla por NullPointer. Con el cambio sería asi (cambie el nombre del paquete en mi versión le puse programa, pero es solo anecdótico). En el ejemplo instancie el botón y le puse "Paleta de Colores" como texto.

package programa;

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*;
public class MasColores extends JFrame {

    private JButton changeColorButton=new JButton("Paleta de Colores");
    private Color color = Color.LIGHT_GRAY;
    private Container container;
    public MasColores()
    {
        super("Usando JColorChoose");
        container=getContentPane();
        container.setLayout(new FlowLayout());
        //set up BotonCambiaColor y registro del evento
        changeColorButton.addActionListener
                (
                        new ActionListener()
                        {//anonymous inner class
                            //display JColorChooser When user clicks button
                            public void actionPerformed(ActionEvent event)
                            {
                                color = JColorChooser.showDialog(
                                        MasColores.this,"Elige un color",color);
                                //set default color, if no color is returned
                                if(color==null)
                                    color=Color.LIGHT_GRAY;
                                //change content pane's background color
                                container.setBackground(color);
                            }
                        }
                );
        container.add(changeColorButton);
        setSize(400,130);
        setVisible(true);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MasColores application = new MasColores();
        //application.setVisible(true);
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

Salida por pantalla de tu programa funcionando con el cambio (instanciar el JButton llamado changeColorButton )

introducir la descripción de la imagen aquí

Saludos.

TheSupermax03
  • 631
  • 3
  • 6
  • Es muy probable que el negativo que tenes se deba a que hay una pregunta generica que responde justamente este tipo de preguntas. – gbianchi Mar 06 '18 at 04:39
  • No habras sido vos gbianchi que me pusiste negativo?. ja ja ja. Todo bien son cosas que pasan.... De todas formas la respuesta funciona OK. ¿ El usuario me califico negativo u otra persona?. Saludos y gracias. – TheSupermax03 Mar 06 '18 at 04:42
  • ni idea. no se puede saber quien voto los votos (todos) son secretos. el unico que sabe es quien voto. Pero ya que estas ganando reputacion y aprendiendo a usar el sitio, fijate siempre si no hay una respuesta ya viva para las preguntas mas comunes (y esta es la mas comun por lejos) – gbianchi Mar 06 '18 at 04:43
  • Si algo vi de los NullPointer pasados ,presentes y futuros. El NullPointer es super comun aunque claro las razones son distintas en cada caso. Mi solución se refiere a este caso puntual. Pero lo tendré en cuenta. Gracias. Veo que estas atento a mi desempeño, lo cual es un tanto halagador. Saludos. – TheSupermax03 Mar 06 '18 at 04:52
  • gracias por prestar atencion y ayudar ;) – gbianchi Mar 06 '18 at 04:57
  • gracias amigo aveces se pone muy engorroso y no entiendo y tengo que decifrarlo poco a poco – Vladimir Joel Mar 06 '18 at 05:03