package org.kodejava.swing;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import java.awt.FlowLayout;
public class ButtonImageExample extends JFrame {
public ButtonImageExample() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new ButtonImageExample().setVisible(true));
}
private void initComponents() {
setTitle("My Buttons");
setSize(500, 500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
// Creates two JButton object with an images to display. The image can be
// a gif, jpeg, png and some other type supported. And we also set the
// mnemonic character of the button for short-cut key.
JButton okButton = new JButton("OK", new ImageIcon(
this.getClass().getResource("/images/ok.png")));
okButton.setMnemonic('O');
JButton cancelButton = new JButton("Cancel", new ImageIcon(
this.getClass().getResource("/images/cancel.png")));
cancelButton.setMnemonic('C');
getContentPane().add(okButton);
getContentPane().add(cancelButton);
}
}
Category Archives: Swing
How do I use JFormattedTextField to format user input?
The JFormattedTextField allows us to create a text field that can accept a formatted input. In this code snippet we create two formatted text fields that accept a valid phone number and a date.
package org.kodejava.swing;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.text.DateFormatter;
import javax.swing.text.MaskFormatter;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FormattedTextFieldExample extends JFrame {
public FormattedTextFieldExample() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new FormattedTextFieldExample().setVisible(true));
}
private void initComponents() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("Format User Input");
setSize(new Dimension(500, 500));
getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));
MaskFormatter mask = null;
try {
// Create a MaskFormatter for accepting phone number, the # symbol accept
// only a number. We can also set the empty value with a place holder
// character.
mask = new MaskFormatter("(###) ###-####");
mask.setPlaceholderCharacter('_');
} catch (ParseException e) {
e.printStackTrace();
}
// Create a formatted text field that accept a valid phone number.
JFormattedTextField phoneField = new JFormattedTextField(mask);
phoneField.setPreferredSize(new Dimension(100, 20));
// Here we create a formatted text field that accept a date value. We
// create an instance of SimpleDateFormat and use it to create a
// DateFormatter instance which will be passed to the JFormattedTextField.
DateFormat format = new SimpleDateFormat("dd-MMMM-yyyy");
DateFormatter df = new DateFormatter(format);
JFormattedTextField dateField = new JFormattedTextField(df);
dateField.setPreferredSize(new Dimension(100, 20));
dateField.setValue(new Date());
getContentPane().add(phoneField);
getContentPane().add(dateField);
}
}
Here are some other characters that can be used in the MaskFormatter class.
| Char | Description |
|---|---|
| # | For number |
| ? | For letter |
| A | For number or letter |
| * | For anything |
| L | For letter, it will be converted to the equivalent lower case |
| U | For letter, it will be converted to the equivalent upper case |
| H | For hexadecimal value |
| ‘ | To escape another mask character |
How do I handle mouse button click event?
package org.kodejava.swing;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MouseClickEventDemo extends JFrame {
public MouseClickEventDemo() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new MouseClickEventDemo().setVisible(true));
}
private void initComponents() {
setTitle("Handling Mouse Click Event");
setSize(500, 500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
final JTextArea textArea = new JTextArea();
textArea.setText("Click Me!");
textArea.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.NOBUTTON) {
textArea.setText("No button clicked" + "\n");
} else if (e.getButton() == MouseEvent.BUTTON1) {
textArea.setText("Button 1 clicked" + "\n");
} else if (e.getButton() == MouseEvent.BUTTON2) {
textArea.setText("Button 2 clicked" + "\n");
} else if (e.getButton() == MouseEvent.BUTTON3) {
textArea.setText("Button 3 clicked" + "\n");
}
textArea.append("Number of click: " + e.getClickCount() + "\n");
textArea.append("Click position (X, Y): " + e.getX() + ", " + e.getY());
}
});
getContentPane().add(textArea);
}
}
How do I handle mouse wheel event?
package org.kodejava.swing;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import java.awt.event.MouseWheelEvent;
public class MouseWheelListenerDemo extends JFrame {
public MouseWheelListenerDemo() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new MouseWheelListenerDemo().setVisible(true));
}
private void initComponents() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("Mouse Wheel Listener Demo");
setSize(500, 500);
JTextArea textArea = new JTextArea();
textArea.addMouseWheelListener(e -> {
System.out.println("MouseWheelListenerDemo.mouseWheelMoved");
// If wheel rotation value is a negative it means rotate up, while
// positive value means rotate down
if (e.getWheelRotation() < 0) {
System.out.println("Rotated Up... " + e.getWheelRotation());
} else {
System.out.println("Rotated Down... " + e.getWheelRotation());
}
// Get scrolled unit amount
System.out.println("ScrollAmount: " + e.getScrollAmount());
// WHEEL_UNIT_SCROLL representing scroll by unit such as the
// arrow keys. WHEEL_BLOCK_SCROLL representing scroll by block
// such as the page-up or page-down key.
if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) {
System.out.println("MouseWheelEvent.WHEEL_UNIT_SCROLL");
}
if (e.getScrollType() == MouseWheelEvent.WHEEL_BLOCK_SCROLL) {
System.out.println("MouseWheelEvent.WHEEL_BLOCK_SCROLL");
}
});
getContentPane().add(textArea);
}
}
The scrolling the mouse wheel the code snippet will print something like:
MouseWheelListenerDemo.mouseWheelMoved
Rotated Down... 1
ScrollAmount: 3
MouseWheelEvent.WHEEL_UNIT_SCROLL
MouseWheelListenerDemo.mouseWheelMoved
Rotated Up... -1
ScrollAmount: 3
MouseWheelEvent.WHEEL_UNIT_SCROLL
How do I handle mouse motion event?
package org.kodejava.swing;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
public class MouseMotionListenerDemo extends JFrame {
public MouseMotionListenerDemo() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new MouseMotionListenerDemo().setVisible(true));
}
private void initComponents() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(500, 500);
JTextArea textArea = new JTextArea("Hello World... try to move the mouse, click and drag it...");
textArea.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
System.out.println("Mouse Dragged...");
}
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse Moved...");
}
});
getContentPane().add(textArea);
}
}



