XJL:Swing中的格式化文本框

首先演示一个NumberFormatter的例子,在这个例子中要求用户输入一个数字,单击按钮后将用户输入的数字乘2以后重新赋值给输入框。用户输入的数字必须大于0,小于100。
package com.cownew.Char19;
import java.awt.Font;
import java.awt.Rectangle;
import java.math.BigDecimal;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.text.NumberFormatter;
import javax.swing.JTextField;
public class NumberFormaterDialog1 extends JDialog
{
private JPanel jContentPane = null;
private JFormattedTextField numTxtField = null;
private JButton jButton = null;
private JTextField jTextField = null;
private JFormattedTextField getNumTxtField()
{
if (numTxtField == null)
{
NumberFormatter numFormater = new NumberFormatter();
numFormater.setMaximum(new BigDecimal(100));
numFormater.setMinimum(new BigDecimal(0));
numTxtField = new JFormattedTextField(numFormater);
numTxtField.setBounds(new Rectangle(56, 38, 154, 24));
}
return numTxtField;
}
private JButton getJButton()
{
if (jButton == null)
{
jButton = new JButton();
jButton.setBounds(new Rectangle(78, 80, 81, 36));
jButton.setFont(new Font("Dialog", Font.PLAIN, 18));
jButton.setText("计算");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e)
{
BigDecimal oldValue = (BigDecimal) getNumTxtField()
.getValue();
if (oldValue != null)
{
getNumTxtField().setValue(
oldValue.multiply(new BigDecimal(2)));
}
else
{
JOptionPane.showMessageDialog(
NumberFormaterDialog1.this,"值非法");
}
}
});
}
return jButton;
}
private JTextField getJTextField()
{
if (jTextField == null)
{
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(176, 83, 76, 22));
}
return jTextField;
}
public static void main(String[] args)
{
NumberFormaterDialog1 dlg = new NumberFormaterDialog1();
dlg.show();
}
public NumberFormaterDialog1()
{
super();
initialize();
}
private void initialize()
{
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
private JPanel getJContentPane()
{
if (jContentPane == null)
{
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getNumTxtField(), null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJTextField(), null);
}
return jContentPane;
}
}
当我们输入-3这个无效值的时候是允许输入的,但是当鼠标焦点移动到另外的控件的时候,“-3”就会消失。这个行为可以通过NumberFormatter 的setAllowsInvalid方法来改变:
 
图 17.5
 
图 17.6
如果输入“10”这个合法的数字,单击“计算”按钮即可算出正确的值:
 
图 17.7
 
图 17.8
案例系统中的com.cownew.ctk.ui.swing.JNumberTextField就是为了方便使用而从JFormattedTextField派生的一个数字输入控件。
DateFormatter的使用也是类似的,也允许设置最大最小值,实际上只要从InternationalFormatter派生的类,并且数据类型实现了Comparable接口都可以设置极值。
MaskFormatter允许开发人员使用掩码指定更加复杂的校验规则。掩码是一串特殊的字符串,每个字符的含义如下表所示:
字符
说明
#
匹配任何数字字符
'
转义符,用来将格式字符当成普通字符用
U
任意大写字母
L
任意小写字母
A
任意数字或者字母
?
任何字母
*
任何字符
H
任何十六进制字符 (0-9, a-f or A-F).
实例化时指定其掩码即可:
MaskFormatter formatter = new MaskFormatter("0x***");
formatter.setValidCharacters("0123456789abcdefABCDEF");
还允许为掩码设定占位符,这样可用性更好:
MaskFormatter formatter = new MaskFormatter("###-####");
formatter.setPlaceholderCharacter('_');
formatter.getDisplayValue(tf, "123");

本文出自 “CowNew开源团队” 博客,转载请与作者联系!

分享至
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:未分类┆阅读( 0)┆评论( 0) ┆ 返回博主首页┆ 返回博客首页
上一篇 Swing中的滚动条 下一篇 盖茨北大演讲被闹场2007年4月20日

相关文章

  • VFP如何在文本框中输入文本时会弹出列表框并..
  • 格式化搜索字段与MRP
  • 格式化字符串攻击笔记
  • 几秒钟快速格式化120G大硬盘
  • 用Ghost几秒钟快速格式化120G大硬盘

职位推荐

  • web前端开发工程师
  • Java高级工程师(探针)
  • Python数据采集&挖掘 工程师
  • Java架构师
  • 中高级前端工程师

文章评论

 
 

发表评论            

昵  称:
登录  快速注册
验证码:

点击图片可刷新验证码请点击后输入验证码博客过2级,无需填写验证码

内  容:

同时赞一个

每日博报 精彩不止一点关闭

你可能感兴趣的:(文本框,职场,格式化,休闲,XJL:Swing)