package FormatTest;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Array;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.DefaultFormatter;
import javax.swing.text.DocumentFilter;
import javax.swing.text.InternationalFormatter;
import javax.swing.text.MaskFormatter;
/**
* Frame ce contine cimpul de redactare cu continerea dormatului si unui buton, ce presupune activarea continutului lor.
* @author Dan
*
*/
public class FormatTestFrame extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
public FormatTestFrame()
{
setTitle("FormatTest");
setSize(WIDTH,HEIGHT);
JPanel buttonPanel = new JPanel();
okButton = new JButton("OK");
buttonPanel.add(okButton);
add(buttonPanel,BorderLayout.SOUTH);
mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(0,3));
add(mainPanel,BorderLayout.CENTER);
JFormattedTextField intField = new JFormattedTextField(NumberFormat.getInstance());
intField.setValue(new Integer(100));
addRow("Number:", intField);
JFormattedTextField intField2 = new JFormattedTextField(NumberFormat.getInstance());
intField2.setValue(new Integer(100));
intField2.setFocusLostBehavior(JFormattedTextField.COMMIT);
addRow("Number (commit behavior):", intField2);
JFormattedTextField intField3 = new JFormattedTextField(new InternationalFormatter(NumberFormat.getInstance())
{
/**
*
*/
private static final long serialVersionUID = 1L;
protected DocumentFilter getDocumentFilter()
{
return filter;
}
private DocumentFilter filter = new IntFilter();
});
intField3.setValue(new Integer(100));
addRow("Filtered Number", intField3);
JFormattedTextField intField4 = new JFormattedTextField(NumberFormat.getInstance());
intField4.setValue(new Integer(100));
intField4.setInputVerifier(new FormattedTextFieldVerifier());
addRow("Verified Number", intField4);
JFormattedTextField currencyField = new JFormattedTextField(NumberFormat.getInstance());
currencyField.setValue(new Double(10));
addRow("Currency:", currencyField);
JFormattedTextField dateField = new JFormattedTextField(DateFormat.getDateInstance());
dateField.setValue(new Date());
addRow("Date (default):", dateField);
DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT);
format.setLenient(false);
JFormattedTextField dateField2 = new JFormattedTextField(format);
dateField2.setValue(new Date());
addRow("Date (short,not lenient)", dateField2);
try
{
DefaultFormatter formatter = new DefaultFormatter();
formatter.setOverwriteMode(false);
JFormattedTextField urlField = new JFormattedTextField(formatter);
urlField.setValue(new URL("http://www.google.com"));
addRow("URL:",urlField);
}
catch(MalformedURLException e)
{
e.printStackTrace();
}
try
{
MaskFormatter formmater = new MaskFormatter("###-##-####");
formmater.setPlaceholderCharacter('0');
JFormattedTextField ssnField = new JFormattedTextField(formmater);
ssnField.setValue("078-05-1120");
addRow("SSN Mask:", ssnField);
}
catch(ParseException e)
{
e.printStackTrace();
}
JFormattedTextField ipField = new JFormattedTextField(new IPAddressFormatter());
ipField.setValue(new byte[] {(byte) 130,65,86,66});
addRow("IP Address:", ipField);
}
/**
* Adauga Textul in panelul pricipal
*/
public void addRow(String labelText, final JFormattedTextField field)
{
mainPanel.add(new JLabel(labelText));
mainPanel.add(field);
final JLabel valueLabel = new JLabel();
mainPanel.add(valueLabel);
okButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Object value = field.getValue();
if(value.getClass().isArray())
{
StringBuilder builder = new StringBuilder();
builder.append('{');
for(int i=0;i<Array.getLength(value);i++)
{
if(i>0)
{
builder.append(',');
}
builder.append(Array.get(value, i).toString());
}
builder.append('}');
valueLabel.setText(builder.toString());
}
else
{
valueLabel.setText(value.toString());
}
}
});
}
private static final int WIDTH = 500;
private static final int HEIGHT = 250;
private JButton okButton;
private JPanel mainPanel;
}