List of usage examples for javax.swing.text NumberFormatter setCommitsOnValidEdit
public void setCommitsOnValidEdit(boolean commit)
JFormattedTextField. From source file:components.ConversionPanel.java
ConversionPanel(Converter myController, String myTitle, Unit[] myUnits, ConverterRangeModel myModel) {
if (MULTICOLORED) {
setOpaque(true);/*from w w w . j a v a2 s. co m*/
setBackground(new Color(0, 255, 255));
}
setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(myTitle),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
//Save arguments in instance variables.
controller = myController;
units = myUnits;
title = myTitle;
sliderModel = myModel;
//Create the text field format, and then the text field.
numberFormat = NumberFormat.getNumberInstance();
numberFormat.setMaximumFractionDigits(2);
NumberFormatter formatter = new NumberFormatter(numberFormat);
formatter.setAllowsInvalid(false);
formatter.setCommitsOnValidEdit(true);//seems to be a no-op --
//aha -- it changes the value property but doesn't cause the result to
//be parsed (that happens on focus loss/return, I think).
//
textField = new JFormattedTextField(formatter);
textField.setColumns(10);
textField.setValue(new Double(sliderModel.getDoubleValue()));
textField.addPropertyChangeListener(this);
//Add the combo box.
unitChooser = new JComboBox();
for (int i = 0; i < units.length; i++) { //Populate it.
unitChooser.addItem(units[i].description);
}
unitChooser.setSelectedIndex(0);
sliderModel.setMultiplier(units[0].multiplier);
unitChooser.addActionListener(this);
//Add the slider.
slider = new JSlider(sliderModel);
sliderModel.addChangeListener(this);
//Make the text field/slider group a fixed size
//to make stacked ConversionPanels nicely aligned.
JPanel unitGroup = new JPanel() {
public Dimension getMinimumSize() {
return getPreferredSize();
}
public Dimension getPreferredSize() {
return new Dimension(150, super.getPreferredSize().height);
}
public Dimension getMaximumSize() {
return getPreferredSize();
}
};
unitGroup.setLayout(new BoxLayout(unitGroup, BoxLayout.PAGE_AXIS));
if (MULTICOLORED) {
unitGroup.setOpaque(true);
unitGroup.setBackground(new Color(0, 0, 255));
}
unitGroup.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
unitGroup.add(textField);
unitGroup.add(slider);
//Create a subpanel so the combo box isn't too tall
//and is sufficiently wide.
JPanel chooserPanel = new JPanel();
chooserPanel.setLayout(new BoxLayout(chooserPanel, BoxLayout.PAGE_AXIS));
if (MULTICOLORED) {
chooserPanel.setOpaque(true);
chooserPanel.setBackground(new Color(255, 0, 255));
}
chooserPanel.add(unitChooser);
chooserPanel.add(Box.createHorizontalStrut(100));
//Put everything together.
setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
add(unitGroup);
add(chooserPanel);
unitGroup.setAlignmentY(TOP_ALIGNMENT);
chooserPanel.setAlignmentY(TOP_ALIGNMENT);
}
From source file:Converter.java
ConversionPanel(Converter myController, String myTitle, Unit[] myUnits, ConverterRangeModel myModel) {
if (MULTICOLORED) {
setOpaque(true);//w ww . jav a 2s .c o m
setBackground(new Color(0, 255, 255));
}
setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(myTitle),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
// Save arguments in instance variables.
controller = myController;
units = myUnits;
title = myTitle;
sliderModel = myModel;
// Create the text field format, and then the text field.
numberFormat = NumberFormat.getNumberInstance();
numberFormat.setMaximumFractionDigits(2);
NumberFormatter formatter = new NumberFormatter(numberFormat);
formatter.setAllowsInvalid(false);
formatter.setCommitsOnValidEdit(true);// seems to be a no-op --
// aha -- it changes the value property but doesn't cause the result to
// be parsed (that happens on focus loss/return, I think).
//
textField = new JFormattedTextField(formatter);
textField.setColumns(10);
textField.setValue(new Double(sliderModel.getDoubleValue()));
textField.addPropertyChangeListener(this);
// Add the combo box.
unitChooser = new JComboBox();
for (int i = 0; i < units.length; i++) { // Populate it.
unitChooser.addItem(units[i].description);
}
unitChooser.setSelectedIndex(0);
sliderModel.setMultiplier(units[0].multiplier);
unitChooser.addActionListener(this);
// Add the slider.
slider = new JSlider(sliderModel);
sliderModel.addChangeListener(this);
// Make the text field/slider group a fixed size
// to make stacked ConversionPanels nicely aligned.
JPanel unitGroup = new JPanel() {
public Dimension getMinimumSize() {
return getPreferredSize();
}
public Dimension getPreferredSize() {
return new Dimension(150, super.getPreferredSize().height);
}
public Dimension getMaximumSize() {
return getPreferredSize();
}
};
unitGroup.setLayout(new BoxLayout(unitGroup, BoxLayout.PAGE_AXIS));
if (MULTICOLORED) {
unitGroup.setOpaque(true);
unitGroup.setBackground(new Color(0, 0, 255));
}
unitGroup.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
unitGroup.add(textField);
unitGroup.add(slider);
// Create a subpanel so the combo box isn't too tall
// and is sufficiently wide.
JPanel chooserPanel = new JPanel();
chooserPanel.setLayout(new BoxLayout(chooserPanel, BoxLayout.PAGE_AXIS));
if (MULTICOLORED) {
chooserPanel.setOpaque(true);
chooserPanel.setBackground(new Color(255, 0, 255));
}
chooserPanel.add(unitChooser);
chooserPanel.add(Box.createHorizontalStrut(100));
// Put everything together.
setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
add(unitGroup);
add(chooserPanel);
unitGroup.setAlignmentY(TOP_ALIGNMENT);
chooserPanel.setAlignmentY(TOP_ALIGNMENT);
}