Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {

    public static void main(String[] args) {
        Color TRUE_COLOR = new Color(180, 200, 255);
        Color FALSE_COLOR = new Color(255, 100, 100);

        final MyBean panel = new MyBean();
        panel.setTitle(true);
        panel.setBackground(TRUE_COLOR);
        panel.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                panel.setTitle(!panel.getTitle());
            }
        });
        panel.addPropertyChangeListener(new PropertyChangeListener() {

            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                if (evt.getPropertyName().equals(MyBean.TITLE_PROP_NAME)) {
                    panel.setBackground(panel.getTitle() ? TRUE_COLOR : FALSE_COLOR);
                }
            }
        });
        JFrame frame = new JFrame();
        frame.getContentPane().add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);

        frame.setVisible(true);

    }

}

class MyBean extends JPanel {

    public final static String TITLE_PROP_NAME = "title";
    static final long serialVersionUID = 1L;
    boolean title;
    PropertyChangeSupport pcs = new PropertyChangeSupport(this);

    public boolean getTitle() {
        return this.title;
    }

    public void setTitle(boolean title) {
        boolean old = this.title;
        this.title = title;
        this.pcs.firePropertyChange(TITLE_PROP_NAME, old, title);
    }

    @Override
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        this.pcs.addPropertyChangeListener(listener);
    }

    @Override
    public void removePropertyChangeListener(PropertyChangeListener listener) {
        this.pcs.removePropertyChangeListener(listener);
    }
}