?? testjformattedtextfield.java
字號:
import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.*;
import java.net.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.border.*;
/**
* Description:
* <br/>Copyright (C), 2005-2008, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
public class TestJFormattedTextField
{
private JFrame mainWin = new JFrame("測試格式化文本框");
private JButton okButton = new JButton("確定");
//定義用于添加格式化文本框的容器
private JPanel mainPanel = new JPanel();
JFormattedTextField[] fields = new JFormattedTextField[6];
String[] behaviorLabels = new String[]
{
"COMMIT",
"COMMIT_OR_REVERT",
"PERSIST",
"REVERT"
};
int[] behaviors = new int[]
{
JFormattedTextField.COMMIT,
JFormattedTextField.COMMIT_OR_REVERT,
JFormattedTextField.PERSIST,
JFormattedTextField.REVERT
};
ButtonGroup bg = new ButtonGroup();
public void init()
{
//添加按鈕
JPanel buttonPanel = new JPanel();
buttonPanel.add(okButton);
mainPanel.setLayout(new GridLayout(0, 3));
mainWin.add(mainPanel, BorderLayout.CENTER);
//使用NumberFormat的integerInstance創建一個JFormattedTextField
fields[0] = new JFormattedTextField(NumberFormat.getIntegerInstance());
//設置初始值
fields[0].setValue(new Integer(100));
addRow("整數格式文本框 :", fields[0]);
//使用NumberFormat的currencyInstance創建一個JFormattedTextField
fields[1] = new JFormattedTextField(NumberFormat.getCurrencyInstance());
fields[1].setValue(new Double(100));
addRow("貨幣格式文本框:", fields[1]);
//使用默認的日期格式創建一個JFormattedTextField對象
fields[2] = new JFormattedTextField(DateFormat.getDateInstance());
fields[2].setValue(new Date());
addRow("默認的日期格式器:", fields[2]);
//使用SHORT類型的日期格式創建一個JFormattedTextField對象,且要求采用嚴格日期格式
DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT);
//要求采用嚴格的日期格式語法
format.setLenient(false);
fields[3] = new JFormattedTextField(format);
fields[3].setValue(new Date());
addRow("SHORT類型的日期格式器(語法嚴格):", fields[3]);
try
{
//創建默認的DefaultFormatter對象
DefaultFormatter formatter = new DefaultFormatter();
//關閉overwrite狀態
formatter.setOverwriteMode(false);
fields[4] = new JFormattedTextField(formatter);
//使用DefaultFormatter來格式化URL
fields[4].setValue(new URL("http://www.oneedu.cn"));
addRow("URL:", fields[4]);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
try
{
MaskFormatter formatter = new MaskFormatter("020-########");
//設置占位符
formatter.setPlaceholderCharacter('□');
fields[5] = new JFormattedTextField(formatter);
//設置初始值
fields[5].setValue("020-85210088");
addRow("電話號碼:", fields[5]);
}
catch (ParseException exception)
{
exception.printStackTrace();
}
JPanel focusLostPanel = new JPanel();
//采用循環方式加入失去焦點行為的單選按鈕
for (int i = 0; i < behaviorLabels.length ; i++ )
{
final int index = i;
final JRadioButton radio = new JRadioButton(behaviorLabels[i]);
//默認選中第二個單選按鈕
if (i == 1)
{
radio.setSelected(true);
}
focusLostPanel.add(radio);
bg.add(radio);
//為所有單選按鈕添加事件監聽器
radio.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//如果當前該單選按鈕處于選中狀態,
if (radio.isSelected())
{
//設置所有的格式化文本框的失去焦點的行為
for (int j = 0 ; j < fields.length ; j++)
{
fields[j].setFocusLostBehavior(behaviors[index]);
}
}
}
});
}
focusLostPanel.setBorder(new TitledBorder(new EtchedBorder(),
"請選擇焦點失去后的行為"));
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(focusLostPanel , BorderLayout.NORTH);
p.add(buttonPanel , BorderLayout.SOUTH);
mainWin.add(p , BorderLayout.SOUTH);
mainWin.pack();
mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWin.setVisible(true);
}
//定義添加一行格式化文本框的方法
private 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 event)
{
Object value = field.getValue();
//輸出格式化文本框的值
valueLabel.setText(value.toString());
}
});
}
public static void main(String[] args)
{
new TestJFormattedTextField().init();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -