From fb7d03388e298258563c22abda1bd46cdaf991b7 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Mon, 25 Apr 2016 22:11:28 -0400 Subject: General code cleanup, and some more GUI controls --- .../java/bjc/utils/gui/FormattedInputPanel.java | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 BJC-Utils2/src/main/java/bjc/utils/gui/FormattedInputPanel.java (limited to 'BJC-Utils2/src/main/java/bjc/utils/gui/FormattedInputPanel.java') diff --git a/BJC-Utils2/src/main/java/bjc/utils/gui/FormattedInputPanel.java b/BJC-Utils2/src/main/java/bjc/utils/gui/FormattedInputPanel.java new file mode 100644 index 0000000..f11c3a8 --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/gui/FormattedInputPanel.java @@ -0,0 +1,66 @@ +package bjc.utils.gui; + +import java.util.function.Consumer; + +import javax.swing.JFormattedTextField; +import javax.swing.JFormattedTextField.AbstractFormatter; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import bjc.utils.gui.layout.HLayout; + +/** + * A simple panel allowing for input of a single formatted value + * + * @author ben + * + * @param + * The type of value being formatted + */ +public class FormattedInputPanel extends JPanel { + private static final long serialVersionUID = 5232016563558588031L; + private JFormattedTextField field; + + /** + * Create a new formatted input panel + * + * @param label + * The label for this panel + * @param length + * The length of this panel + * @param formatter + * The formatter to use for input + * @param valueReciever + * The action to call whenever the value changes + */ + @SuppressWarnings("unchecked") + public FormattedInputPanel(String label, int length, + AbstractFormatter formatter, + Consumer valueReciever) { + setLayout(new HLayout(2)); + + JLabel lab = new JLabel(label); + field = new JFormattedTextField(formatter); + + field.setColumns(length); + field.setFocusLostBehavior(JFormattedTextField.COMMIT_OR_REVERT); + field.addPropertyChangeListener("value", (event) -> { + // This is safe, because InputVal should be the type of + // whatever object the formatter is returning + valueReciever.accept((InputVal) field.getValue()); + }); + + add(lab); + add(field); + } + + /** + * Reset the value in this panel to a specified value + * + * @param value + * The value to set the panel to + */ + public void resetValues(InputVal value) { + field.setValue(value); + } +} -- cgit v1.2.3