Swing GUI application for regular expression testing (original) (raw)

This is an example of how to create a Swing GUI application for regular expression testing. The application creates a window that reads a pattern and a String and checks if the String matches the pattern and how many times the pattern appears in the String. The steps to create such an application are described below:

Let’s take a look at the code snippet that follows:

package com.javacodegeeks.snippets.core;

import java.awt.GridLayout; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener;

/**

public class GuiDemo extends JPanel {

protected Pattern pattern;
protected Matcher m;
protected JTextField pattTF, strTF;
protected JCheckBox compiledOK;
protected JRadioButton match, find, findAll;
protected JTextField mTF;

/**
 * "main program" method - construct and show
 */
public static void main(String[] av) {

JFrame f = new JFrame("GuiDemo");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GuiDemo comp = new GuiDemo();

f.setContentPane(comp);

f.pack();

f.setLocation(200, 200);

f.setVisible(true); }

/**
 * Construct the REDemo object including its GUI
 */
public GuiDemo() {

super();

JPanel top = new JPanel();

top.add(new JLabel("Pattern:", JLabel.RIGHT));

pattTF = new JTextField(20);

pattTF.getDocument().addDocumentListener(new PattListener());

top.add(pattTF);

top.add(new JLabel("Syntax OK?"));

compiledOK = new JCheckBox();

top.add(compiledOK);

ChangeListener cl = new ChangeListener() {

@Override

public void stateChanged(ChangeEvent ce) {

tryToMatch();

}

};

JPanel switchPane = new JPanel();

ButtonGroup bg = new ButtonGroup();

match = new JRadioButton("Match");

match.setSelected(true);

match.addChangeListener(cl);

bg.add(match);

switchPane.add(match);

find = new JRadioButton("Find");

find.addChangeListener(cl);

bg.add(find);

switchPane.add(find);

findAll = new JRadioButton("Find All");

findAll.addChangeListener(cl);

bg.add(findAll);

switchPane.add(findAll);

JPanel strPane = new JPanel();

strPane.add(new JLabel("String:", JLabel.RIGHT));

strTF = new JTextField(20);

strTF.getDocument().addDocumentListener(new StrListener());

strPane.add(strTF);

strPane.add(new JLabel("Matches:"));

mTF = new JTextField(3);

strPane.add(mTF);

setLayout(new GridLayout(0, 1, 5, 5));

add(top);

add(strPane);

add(switchPane); }

protected void setMatch(boolean b) {

if (b) {

mTF.setText("Yes");

} else {

mTF.setText("No");

} }

protected void setMatch(int n) {

mTF.setText(Integer.toString(n)); }

protected void tryToCompile() {

pattern = null;

try {

pattern = Pattern.compile(pattTF.getText());

m = pattern.matcher("");

compiledOK.setSelected(true);

} catch (PatternSyntaxException ex) {

compiledOK.setSelected(false);

} }

protected boolean tryToMatch() {

if (pattern == null) {

return false;

}

m.reset(strTF.getText());

if (match.isSelected() && m.matches()) {

setMatch(true);

return true;

}

if (find.isSelected() && m.find()) {

setMatch(true);

return true;

}

if (findAll.isSelected()) {

int i = 0;

while (m.find()) {

++i;

}

if (i > 0) {

setMatch(i);


return true;

}

}

setMatch(false);

return false; }

/**
 * Any change to the pattern tries to compile the result.
 */
class PattListener implements DocumentListener {

@Override

public void changedUpdate(DocumentEvent ev) {

tryToCompile();

}

@Override

public void insertUpdate(DocumentEvent ev) {

tryToCompile();

}

@Override

public void removeUpdate(DocumentEvent ev) {

tryToCompile();

} }

/**
 * Any change to the input string tries to match the result
 */
class StrListener implements DocumentListener {

@Override

public void changedUpdate(DocumentEvent ev) {

tryToMatch();

}

@Override

public void insertUpdate(DocumentEvent ev) {

tryToMatch();

}

@Override

public void removeUpdate(DocumentEvent ev) {

tryToMatch();

} } }

This was an example of Swing GUI application for regular expression testing in Java.

Photo of Ilias Tsagklis

Ilias is a software developer turned online entrepreneur. He is co-founder and Executive Editor at Java Code Geeks.

Back to top button