Java Swing Tutorial - Java AbstractAction .firePropertyChange (String propertyName, Object oldValue, Object newValue)








Syntax

AbstractAction.firePropertyChange(String propertyName, Object oldValue, Object newValue) has the following syntax.

protected void firePropertyChange(String propertyName,   Object oldValue,   Object newValue)

Example

In the following code shows how to use AbstractAction.firePropertyChange(String propertyName, Object oldValue, Object newValue) method.

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
//  w  w w  . jav  a  2s. c o m
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

public class Main {
  public static void main(String args[]) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final Action printAction = new PrintHelloAction();
    
    JMenuBar menuBar = new JMenuBar();
    JMenu menu = new JMenu("File");
    menuBar.add(menu);
    JMenuItem menuItem = new JMenuItem("Print");
    KeyStroke ctrlP = KeyStroke.getKeyStroke(KeyEvent.VK_P,
        InputEvent.CTRL_MASK);
    menuItem.setAccelerator(ctrlP);
    menuItem.addActionListener(printAction);
    menu.add(menuItem);

    JButton fileButton = new JButton("About");
    fileButton.setMnemonic(KeyEvent.VK_A);
    fileButton.addActionListener(printAction);

    frame.setJMenuBar(menuBar);

    frame.add(fileButton, BorderLayout.SOUTH);
    frame.setSize(300, 100);
    frame.setVisible(true);
  }
}

class PrintHelloAction extends AbstractAction {

  PrintHelloAction() {
    super("Print");
    putValue(Action.SHORT_DESCRIPTION, "Hello, World");
    PropertyChangeListener listener = new PropertyChangeListener(){
      @Override
      public void propertyChange(PropertyChangeEvent evt) {
        System.out.println(evt);
      }
    };
    super.addPropertyChangeListener(listener);
    super.firePropertyChange(Action.SHORT_DESCRIPTION,"value1","value2");
  }

  public void actionPerformed(ActionEvent actionEvent) {
    System.out.println("Hello, World");
  }
}