Ho la seguente classe in java:
codice:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.MouseEvent;

import javax.swing.JOptionPane;

import core.Input;

public class InputComponent extends AbstractComponent implements CircuitComponent{

    private static final long serialVersionUID = 1L;
    private LinkComponent link;
    private boolean isLinked;
    
    public InputComponent(String n, CircuitComponent c,CircuitPanel p){
        initPortComponent(n,c,p);
        int w,h;
        w=20;
        h=20;
        getBounds().setSize(w, h);
        setPreferredSize(new Dimension(w,h));
        port=new Input(name);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                if(isLinked==true){
                    JOptionPane.showMessageDialog(null, "Non e' possibile un altro link", "Link Error", JOptionPane.ERROR_MESSAGE);
                }
                else {
                    if(panel.getFunction()==CircuitPanel.PAINT_LINK_FROM){
                        panel.setLink(new LinkComponent(panel));
                        panel.getLink().setDest(getMe());
                        link=panel.getLink();
                        isLinked=true;
                        panel.getLink().setCornerInput(new Point(getBounds().x,getBounds().y+10),true);
                        panel.doOperations(new PaintLinkOperations(panel,panel.getFacade().getColor()));
                        panel.setFunction(CircuitPanel.PAINT_LINE);
                    }
                    else if(panel.getFunction()==CircuitPanel.PAINT_LINE){
                        panel.getLink().setDest(getMe());
                        link=panel.getLink();
                        isLinked=true;
                        panel.getLink().setCornerInput(new Point(getBounds().x,getBounds().y+10),false);
                        panel.getLink().updateSize();
                        CircuitComponent source = panel.getLink().getSource();
                        CircuitComponent dest = panel.getLink().getDest();
                        panel.repaint();
                        panel.setFunction(CircuitPanel.SELECTION);
                    }
                    else{}
                }
            }
        });
    }
    
    public LinkComponent getLink(){
        return link;
    }
    
    public void setLink(LinkComponent l){
        isLinked=true;
        link=l;
    }
    
    public void unsetLink(){
        isLinked=false;
    }
    
    public boolean isLinked(){
        return isLinked;
    }
    
    public void paintComponent(Graphics g){
    	if(name.startsWith("."));
    	else{
          g.setColor(color);
          if(name.contains("=0*")||name.contains("=1*")){
        	  g.drawLine(0,10,10,10);
        	  
          }
          else{
          if(name.endsWith(".")){
        	g.drawLine(0,10,10,10);
       	   g.drawString(name.substring(0, name.length()-2), 1, 9);
        	g.drawString("n", 1, 20);
      	 }
          else{
          	 g.drawLine(0,10,10,10);
             g.drawString(name, 1, 9);
             }
          }
          if(selected){
             g.setColor(Color.blue);
             g.drawRect(0, 0, getBounds().width-1, getBounds().height-1);
        }
     }
    }
    
    public CircuitComponent copyComponent(){
        copy= new InputComponent(name,component.getCopy(),panel);
        return copy;
    }
    
    public void createComponent(){
        port=new Input(name);
    }
    
    public void beforeRemove() {
        if(isLinked){
            ((OutputComponent)link.getSource()).unsetLink();
            panel.remove(link);
        }
    }
    
    public void moveLink(){
        (newXinput,newYinput,getSize().width , getSize().height);
        Insets insets = panel.getInsets();
        int newX=getBounds().x + insets.left;
        int newY=getBounds().y + insets.top + 10;
        if(getLink().getCornerInput() == 1)
            getLink().setCorner1(new Point(newX,newY));
        else
            getLink().setCorner2(new Point(newX,newY));
        getLink().updateSize();
    }
    
}
La classe fa parte di un progetto in cui c'è la gestione dei circuiti logici.
Il problema si verifica quando cerco di fare il collegamento tra 2 porte, e questo collegamento lo annullo, poi non posso + ripetere il collegamento (cosa ke voglio evitare), in quanto mi restituisce l'errore: "Non e' possibile un altro link".

X correggere il problema credo che dovrei resettare la variabile di errore in modo che si possa poi disegnare ancora un link con la grafica e andare avanti con il circuito.

Qualcuno sa aiutarmi nel correggere il problema? In quanto non riesco