Trocar cor de fundo de um JFrame apartir de um background de um JLabel

2 respostas
E

Boa tarde galera,

Estou com uma dúvida, estava eu realizando alguns testes com swing quando resolvi criar uma janela que possua uma palheta de cores e apartir desta palheta trocar a cor do fundo da janela principal.

Porém está dando um erro de NullPointerExcepetion, mas eu não consigo ver onde está este NullPointerException.

(Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException)

segue o código fonte de como deve funcionar a janela.

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class FrameInicial extends JFrame {
	public FrameInicial(){
		setLayout(new BorderLayout());
		setTitle("Tela Inicial");
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(new Dimension(500,500));
				
		JButton btn = new JButton(">>>>>>>>>>>>>> Configurar Cor <<<<<<<<<<<<<<<");
		btn.addActionListener(new FrameInicialListener(this));
		
		add(btn,BorderLayout.PAGE_END);
		
	}
	
	public static void main(String[] args) {
		FrameInicial f = new FrameInicial();
	}
}
class FrameInicialListener implements ActionListener {
	FrameInicial frameInicial;
	public FrameInicialListener( FrameInicial f){
		FrameInicial frameInicial = f;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		FrameExemplo frameExemplo = new FrameExemplo(frameInicial);
	}	
}
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class FrameExemplo extends JFrame{
	
	JPanel panel = new JPanel(new FlowLayout());
	PalhetaCores palhetaCores;
	FrameInicial parent;
	
	JLabel labelTexto = new JLabel("Cor de fundo: ");
	JLabel labelCor = new JLabel("           ");
	
	public FrameExemplo(FrameInicial parent){
		
		this.parent = parent;
		
		setTitle("Escolhe Cores");
		setVisible(true);
		setSize(new Dimension(250,250));
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		panel.add(labelTexto);
		
		
		labelCor.setBackground(Color.red);
		labelCor.setOpaque(true);
		panel.add(labelCor);
		
		JButton btnCor = new JButton("Cor");
		btnCor.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				palhetaCores = new PalhetaCores(labelCor);	
				
				JFrame frame = new JFrame("Palheta de Cores");
				frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
				frame.setVisible(true);
				
				JComponent newContentPane = palhetaCores;
				newContentPane.setOpaque(true);
				frame.setContentPane(newContentPane);
				
				frame.pack();
				frame.setVisible(true);
			}			
		});
		panel.add(btnCor);
		
		
		add(panel, BorderLayout.PAGE_START);
		
		JButton btnOk = new JButton("OK");
		btnOk.addActionListener(new PintaListener(parent, labelCor));
		add(btnOk, BorderLayout.PAGE_END);
	}
	
}

class PintaListener implements ActionListener{
	FrameInicial frameInicial;
	JLabel labelCor;
	public PintaListener(FrameInicial frameInicial, JLabel labelCor) {
		this.frameInicial = frameInicial;
		this.labelCor = labelCor;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		frameInicial.setBackground(labelCor.getBackground());
	}
}
import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JColorChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;


public class PalhetaCores extends JPanel implements ChangeListener{
	private JColorChooser tcc;
	private JLabel labelColor;
	
	public PalhetaCores(JLabel labelColor){
		super(new BorderLayout());
		
		tcc = new JColorChooser(Color.red);
		this.labelColor = labelColor;
		tcc.getSelectionModel().addChangeListener(this);
		add(tcc, BorderLayout.PAGE_END);
		
	}
	
	@Override
	public void stateChanged(ChangeEvent e) {
		Color newColor = tcc.getColor();
		labelColor.setBackground(newColor);
	}	

}

Se alguém poder me ajudar a tirar esta dúvida, obrigado...

2 Respostas

S

Desculpe, postei besteira.

rs

E

Soruji:
Desculpe, postei besteira.

rs

Sem problemas ^^ obrigado por tentar

Criado 7 de março de 2012
Ultima resposta 8 de mar. de 2012
Respostas 2
Participantes 2