Próbuję prawoklikiem zmieniać kolor pól tekstowych poprzez ustawianie ich widoczności. Początkowo pola żółte są "na wierzchu", a pola czerwone pod nimi. Aktualny stan widoczności pól (listę pól widocznych oraz listę pól niewidocznych) zapisuję do XMLa. Niestety po odczycie list z XMLa nie ustawia się prawidłowa widoczność.

Gdzie popełniam błąd?

 
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.swing.BorderFactory;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextArea;
import javax.swing.border.Border;

public class Testy implements ActionListener
{
	JFrame ramka;
	JMenuBar menuBar;
    JMenu menuPlik;
    JMenuItem mOtworz, mZapiszJako;
	JPopupMenu popupPolaZolte, popupPolaCzerwone;
	JMenuItem zmienKolorPolaNaCzerwony, zmienKolorPolaNaZolty;
	JTextArea pole1_zolte, pole2_zolte, pole3_zolte, pole4_zolte, 
              pole1_czerwone, pole2_czerwone, pole3_czerwone, pole4_czerwone;
	ArrayList<JTextArea> listaPolWidocznych, listaPolNiewidocznych;
	Map<String, JTextArea> mapaNazwPol;
	WidocznoscPol widocznoscPol;
	
	
	public static void main(String[] args) 
	{
	      Testy testy = new Testy();
	      testy.zbudujGUI();
	}
	
	public void zbudujGUI()
	{
		ramka = new JFrame();
		ramka.setSize(1000,500);
		ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ramka.setExtendedState(JFrame.MAXIMIZED_BOTH);
		ramka.setLayout(null);
		
		widocznoscPol = new WidocznoscPol(this);
		
		menuBar = new JMenuBar();
		ramka.setJMenuBar(menuBar);
		
		menuPlik = new JMenu("Plik");
		menuBar.add(menuPlik);
		
		mOtworz = new JMenuItem("Otwórz");
		menuPlik.add(mOtworz);
		mOtworz.addActionListener(this);
		
		mZapiszJako = new JMenuItem("Zapisz jako");
		menuPlik.add(mZapiszJako);
		mZapiszJako.addActionListener(this);

		listaPolWidocznych = new ArrayList<JTextArea>();
		listaPolNiewidocznych = new ArrayList<JTextArea>();
		mapaNazwPol = new HashMap<String, JTextArea>();
			
		JTextArea[] polaZolte = {pole1_zolte= new JTextArea(), pole2_zolte = new JTextArea(), pole3_zolte = new JTextArea(), pole4_zolte = new JTextArea()};
		JTextArea[] polaCzerwone = {pole1_czerwone= new JTextArea(), pole2_czerwone = new JTextArea(), pole3_czerwone = new JTextArea(), pole4_czerwone = new JTextArea()};
		
		pole1_zolte.setBounds(500,100,200,50);
		pole2_zolte.setBounds(500,200,200,50);
		pole3_zolte.setBounds(500,300,200,50);
		pole4_zolte.setBounds(500,400,200,50);	
		pole1_czerwone.setBounds(500,100,200,50);
		pole2_czerwone.setBounds(500,200,200,50);
		pole3_czerwone.setBounds(500,300,200,50);
		pole4_czerwone.setBounds(500,400,200,50);
			
		pole1_zolte.setName("pole1_zolte");
		pole2_zolte.setName("pole2_zolte");
		pole3_zolte.setName("pole3_zolte");
		pole4_zolte.setName("pole4_zolte");			
		pole1_czerwone.setName("pole1_czerwone");
		pole2_czerwone.setName("pole2_czerwone");
		pole3_czerwone.setName("pole3_czerwone");
		pole4_czerwone.setName("pole4_czerwone");
				
		mapaNazwPol.put("pole1_zolte", pole1_zolte);
		mapaNazwPol.put("pole2_zolte", pole2_zolte);
		mapaNazwPol.put("pole3_zolte", pole3_zolte);
		mapaNazwPol.put("pole4_zolte", pole4_zolte);			
		mapaNazwPol.put("pole1_czerwone", pole1_czerwone);
		mapaNazwPol.put("pole2_czerwone", pole2_czerwone);
		mapaNazwPol.put("pole3_czerwone", pole3_czerwone);
		mapaNazwPol.put("pole4_czerwone", pole4_czerwone);
		
		popupPolaZolte= new JPopupMenu();
		popupPolaCzerwone = new JPopupMenu();
		
		zmienKolorPolaNaCzerwony = new JMenuItem("Zmień kolor pola na czerwony");
		zmienKolorPolaNaZolty= new JMenuItem("Zmień kolor pola na żółty");
		
		zmienKolorPolaNaCzerwony.addActionListener(this);
		zmienKolorPolaNaZolty.addActionListener(this);
		
		popupPolaZolte.add(zmienKolorPolaNaCzerwony);
		popupPolaCzerwone.add(zmienKolorPolaNaZolty);
		
		Border border = BorderFactory.createLineBorder(Color.BLACK);
		
		for (JTextArea pZ : polaZolte)
		{
		   pZ.setBackground(Color.YELLOW);
		   pZ.setBorder(border);
		   pZ.setComponentPopupMenu(popupPolaZolte);
		   ramka.add(pZ);
		   listaPolWidocznych.add(pZ);
		}
		
		for (JTextArea pC : polaCzerwone)
		{
		   pC.setBackground(Color.RED);
		   pC.setBorder(border);
		   pC.setComponentPopupMenu(popupPolaCzerwone);
		   ramka.add(pC);
		   listaPolNiewidocznych.add(pC);
		}
		widocznoscPol.start();
		ramka.setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e) 
	{
		Object source = e.getSource();		
		Component invokerZ = popupPolaZolte.getInvoker();
		Component invokerC = popupPolaCzerwone.getInvoker();		
				       	
		if (source == zmienKolorPolaNaCzerwony)
		{		
			String nazwaPolaZoltego = invokerZ.getName();
		
			JTextArea poleZolte = mapaNazwPol.get(nazwaPolaZoltego);
			String nazwaPolaCzerwonego = nazwaPolaZoltego.replace("_zolte", "_czerwone");
			JTextArea poleCzerwone = mapaNazwPol.get(nazwaPolaCzerwonego);
			
			listaPolWidocznych.remove(poleZolte);
			listaPolNiewidocznych.remove(poleCzerwone);
			listaPolWidocznych.add(poleCzerwone);
			listaPolNiewidocznych.add(poleZolte);
			
			widocznoscPol.start();
		}
		
		else if (source == zmienKolorPolaNaZolty)
		{	
			String nazwaPolaCzerwonego = invokerC.getName();
			
			JTextArea poleCzerwone = mapaNazwPol.get(nazwaPolaCzerwonego);
			String nazwaPolaZoltego = nazwaPolaCzerwonego.replace("_czerwone", "_zolte");
			JTextArea poleZolte = mapaNazwPol.get(nazwaPolaZoltego);				
			
			listaPolWidocznych.remove(poleCzerwone);
			listaPolNiewidocznych.remove(poleZolte);
			listaPolWidocznych.add(poleZolte);
			listaPolNiewidocznych.add(poleCzerwone);
			
			widocznoscPol.start();	
		}
		
		else if (source == mZapiszJako)
		{
			 JFileChooser fileCh = new JFileChooser();
			   
			   if (fileCh.showSaveDialog(null)==JFileChooser.APPROVE_OPTION)
			   {
				   File nazwaPliku = fileCh.getSelectedFile();  

				   try 
				   {
					   XMLEncoder enc = new XMLEncoder(
					                      new BufferedOutputStream(
					                        new FileOutputStream(nazwaPliku)));			   
					   
						  enc.writeObject(listaPolWidocznych);
						  enc.writeObject(listaPolNiewidocznych);
					   
					   enc.close();		
				   }
				   catch (FileNotFoundException e1) 
				   {
				 	 e1.printStackTrace();
				   } 	
			   }   
		}

		else if (source == mOtworz)
		{	 	  
			listaPolWidocznych.clear();
			listaPolNiewidocznych.clear();
			
			 JFileChooser fileCh = new JFileChooser();
			   
			   if (fileCh.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
			   {
				   File nazwaPliku = fileCh.getSelectedFile(); 
				 				   
				   try 
				   {
					   XMLDecoder dec = new XMLDecoder(
			                              new BufferedInputStream(
			                            		  new FileInputStream(nazwaPliku)));	  		   
					 
					      listaPolWidocznych = (ArrayList<JTextArea>) dec.readObject();
 					      listaPolNiewidocznych = (ArrayList<JTextArea>) dec.readObject();
 					      
					  dec.close();
					  widocznoscPol.start();
				   }
				   catch (FileNotFoundException e1) 
				   {
					 e1.printStackTrace();
			 	   } 		  
			   }	   
		}
	}

I klasa WidocznoscPol:

import javax.swing.JTextArea;

public class WidocznoscPol
	{
	  Testy testy;
	
		public WidocznoscPol(Testy testy)
		{
			this.testy = testy;
		}

		public void start() 
		{		
			for (JTextArea pW : testy.listaPolWidocznych)
			{
				pW.setVisible(true);
			}	
			
			for (JTextArea pN : testy.listaPolNiewidocznych)
			{
				pN.setVisible(false);
			}    		
		  return;
		}	
	}