Leaking this in constructor
===

Netbeans gives 

> Configure "passing suspicious parameters in the constructor" hint

for `controller.addObserver(this);` which makes me ask what the better technique would be, although I [gather it's not a good approach][1].

    package net.bounceme.dur.usenet.swing;
    
    import java.util.Observable;
    import java.util.Observer;
    import java.util.logging.Logger;
    import javax.mail.Folder;
    import javax.swing.ListModel;
    import net.bounceme.dur.usenet.controller.Controller;
    import net.bounceme.dur.usenet.controller.MessageBean;
    import net.bounceme.dur.usenet.controller.MessagesDefaultListModel;
    
    public class MessageSelect extends javax.swing.JPanel implements Observer {
    
        private static final Logger LOG = Logger.getLogger(MessageSelect.class.getName());
        private Controller controller = Controller.getInstance();
        private ListModel messages = new MessagesDefaultListModel();
        private MessageBean messageBean = new MessageBean();
    
        @SuppressWarnings("unchecked")
        public MessageSelect() {
            controller.addObserver(this);
            initComponents();
            messagesJList.setPrototypeCellValue("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
        }


  [1]: http://stackoverflow.com/a/9851843/262852