Mapear imagem para clicar com evento

A intentesão é fazer um simulador e abaixo a imagem mostra as areas em amarelo a serem mapeadas
Bay

qualquer ajuda é valida.
Agradeço

Primeiramente eu iria modelar as classes para representar o circuito.
Os componentes seriam vértices e as ligações seriam as arestas de um grafo.
Depois é que eu me preocuparia em como criar um componente para renderizar o circuito de forma gráfica.

Beleza meu caro staroski, vou seguir seu raciocínio, pois meu conhecimento com java é básico, por isso da ajuda, já iniciei a modelagem das classes e, a cada evolução do processo irei postando para obter um feedback, grato.

Atualizando,
Nesta classe, utilizando JLabel inseri plano de fundo e abertura e fechamento do disjuntor funcionou.

package fullSe;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import fullSe.Chave;

public class FixSee extends JFrame{

private static final MouseListener MouseListener = null;
    ImageIcon iconSub     = new ImageIcon(getClass().getResource("MPD2.jpg"));
ImageIcon iconBay     = new ImageIcon(getClass().getResource("disjuntor.png"));
ImageIcon iconAberto  = new ImageIcon(getClass().getResource("chave3.png"));
     
JLabel l = new JLabel (iconBay);
    JLabel a = new JLabel (iconSub);
    
public FixSee() {
	
	editarJanela();
  		 l.setBounds(336, 260, 34, 40);
             a.setBounds(0, 0 ,708, 483);
     l.addMouseListener (new MouseListener() {
     
             @Override
     public void mouseClicked(MouseEvent e) {

    	 l.setIcon(iconAberto);
      
          }
            @Override
	public void mousePressed(MouseEvent e) {
		
		 l.setIcon(iconBay);
          }
	@Override
	public void mouseReleased(MouseEvent e) {
	
	}
	@Override
	public void mouseEntered(MouseEvent e) {
	}
	@Override
	public void mouseExited(MouseEvent e) {
     }

});
}
private void editarJanela() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(708, 483);
setLocationRelativeTo(null);
setVisible(true);
setLayout(null);
add(l);
add(a);

}

public static void main(String[] args) {
	new FixSee();
        }

}

Nesta outra abaixo tentei as ações de abrir e fechar chaves aí nem teve ação, o disjuntor também congelou.

package fullSe;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Chave extends FixSee{

    ImageIcon iconCabt  = new ImageIcon(getClass().getResource("chave1.png"));
    ImageIcon iconCfed  = new ImageIcon(getClass().getResource("chaveFech2.png"));
    	
JLabel b = new JLabel (iconCfed);

    public Chave() {
        
       add(b);
    
    b.setBounds(333, 160, 40, 50);
          
    b.addMouseListener (new MouseListener() {

        @Override
        public void mouseClicked(MouseEvent e) {
            b.setIcon(iconCabt);
        }

        @Override
        public void mousePressed(MouseEvent e) {
             b.setIcon(iconCabt);
       }
        @Override
        public void mouseReleased(MouseEvent e) {
         }
        @Override
        public void mouseEntered(MouseEvent e) {
        }
        @Override
        public void mouseExited(MouseEvent e) {
        
        }
      });

}
}

Separei as classes entendendo que daria para acionar os comando sem duplicidade do MouseListener , mas não deu certo, tentei realizar ajustes mas permaneceu no mesmo status, pode checar estas condições?
Grato

Pessoal encontrei um modo mais prático, quem pode me ajudar em como abrir, um DOC html interno pelo próprio diretório do programa, o que eu encontrei foi só, que abre externamente não serve. Grato.

Oi pessoal resolvi minha situação utilizando webview e fiquei satisfeito, o tempo de trabalho foi menor
Abraço a todos.