event
List actions of some Components
With this example we shall show you how to create a simple application that lists the actions of some Components you can use in your Java Desktop Application.
You might find it particularly useful if you want to to add a “Help” functionality in your applications.
In short, all you have to do is :
- Create a String array with the name of the contents you want.
- Use
getActions()method to get the list of all the action that are associated with this component.
Let’s see the code snippets that follow:
package com.javacodegeeks.snippets.desktop;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemListener;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.Vector;
import javax.swing.AbstractButton;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.border.Border;
import javax.swing.event.ChangeListener;
import javax.swing.text.JTextComponent;
public class Main {
public static void main(String args[]) {
JFrame jFrame = new JFrame("Action List");
Container cPane = jFrame.getContentPane();
String components[] = {"JTextField", "JPasswordField", "JTextArea", "JTextPane", "JEditorPane"};
final JTextArea text = new JTextArea();
text.setEditable(false);
JScrollPane sPane = new JScrollPane(text);
cPane.add(sPane, BorderLayout.CENTER);
ActionListener actListner = new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
JTextComponent comp = null;
if (command.equals("JTextField")) {
comp = new JTextField();
} else if (command.equals("JPasswordField")) {
comp = new JPasswordField();
} else if (command.equals("JTextArea")) {
comp = new JTextArea();
} else if (command.equals("JTextPane")) {
comp = new JTextPane();
} else {
comp = new JEditorPane();
}
Action acts[] = comp.getActions();
Comparator compare = new Comparator() {
@Override
public int compare(Object object1, Object object2) {
int result = 0;
if ((object1 instanceof Action) && (object2 instanceof Action)) {
String fName = (String) ((Action) object1).getValue(Action.NAME);
String sName = (String) ((Action) object2).getValue(Action.NAME);
result = fName.compareTo(sName);
}
return result;
}
};
Arrays.sort(acts, compare);
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter, true);
int actlen = acts.length;
printWriter.println("Count: " + actlen);
for (int iter = 0; iter < actlen; iter++) {
printWriter.print(acts[iter].getValue(Action.NAME));
printWriter.print(" : ");
printWriter.println(acts[iter].getClass().getName());
}
printWriter.close();
text.setText(stringWriter.toString());
text.setCaretPosition(0);
}
};
final Container container = ButtonOparations.ButtonGroup(components, "List Actions", actListner);
cPane.add(container, BorderLayout.WEST);
jFrame.setSize(600, 350);
jFrame.setVisible(true);
}
}
class ButtonOparations {
private ButtonOparations() {
}
public static Enumeration getSelectedElements(Container container) {
Vector vec = new Vector();
Component comps[] = container.getComponents();
for (int iter = 0, n = comps.length; iter < n; iter++) {
if (comps[iter] instanceof AbstractButton) {
AbstractButton absButton = (AbstractButton) comps[iter];
if (absButton.isSelected()) {
vec.addElement(absButton.getText());
}
}
}
return vec.elements();
}
public static Container ButtonGroup(String elem[]) {
return ButtonGroup(elem, null, null, null, null);
}
public static Container ButtonGroup(String elem[],
String title) {
return ButtonGroup(elem, title, null, null, null);
}
public static Container ButtonGroup(String elem[],
String title, ItemListener iListner) {
return ButtonGroup(elem, title, null, iListner,
null);
}
public static Container ButtonGroup(String elem[],
String title, ActionListener actListener) {
return ButtonGroup(elem, title, actListener, null,
null);
}
public static Container ButtonGroup(String elem[],
String title, ActionListener actListener,
ItemListener itemListener) {
return ButtonGroup(elem, title, actListener,
itemListener, null);
}
public static Container ButtonGroup(String elem[], String str, ActionListener actListener,
ItemListener itemListener, ChangeListener changeListener) {
JPanel jPanel = new JPanel(new GridLayout(0, 1));
if (str != null) {
Border surr = BorderFactory.createTitledBorder(str);
jPanel.setBorder(surr);
}
ButtonGroup grp = new ButtonGroup();
JRadioButton radioButton;
for (int iter = 0, n = elem.length; iter < n; iter++) {
radioButton = new JRadioButton(elem[iter]);
jPanel.add(radioButton);
grp.add(radioButton);
if (actListener != null) {
radioButton.addActionListener(actListener);
}
if (itemListener != null) {
radioButton.addItemListener(itemListener);
}
if (changeListener != null) {
radioButton.addChangeListener(changeListener);
}
}
return jPanel;
}
}
This was an example on how to create an application that lists all the actions bundled with a component.

