Home
JavaEE
Java GUI
Framework
DHtml
Android
插画
教程下载

ATOM 2.0   RSS 2.0
Add to iGoogle Add to Live.com
  • DeZender对用Zend Encoder加密过的PHP文件反编译
  • 写一个用于微博同步的Google Desktop Gadget
  • 在同学的QZone中看到的BB用药大全
  • 今天终于收到金山快盘的邀请码
  • 利用最短ie判断在不同浏览器上播放背景音乐
  • 对插画方面的一点感受与回忆
  • 网上看到的两个死里逃生的图片,记录一下
  • 今天开通了糖果社区,附几个激活码
  • 终于可以实现我的多个微博实时同步了
  • 备案和现场拍照就是对站长们的瞎折腾
  • 今天开通了糖果社区,附几个激活码
  • 终于可以实现我的多个微博实时同步了
  • 备案和现场拍照就是对站长们的瞎折腾
  • 昨天借用飞姐的佳作做的一个浪漫爱情网页
  • 有几个腾讯微博的邀请码(实时更新)
  • BB的网站移到了GAE-JAVA上了
  • 一个基于GAE Python Web.py和JQuery的留言本程序
  • 类许愿墙的一个告白网站和一个电子书网站
  • Android中用Bitmap获取图片中某个区域的图象
  • 对暴力破解带密码的QQ相册的可行性分析
  • 对淘宝web旺旺版一些通讯接口的研究

IP输入控件,IP控件,JFormattedTextField

posted by David Chen at June 29, 2007, 8:28 AM    

IP IP控件 IP输入控件 JFormattedTextField
原理,用最笨的方法,模拟一个输入框,将一个输入框分成几部分[].[].[].[] 几部分, []是一个JFormattedTextField, . 是一个Label,然后重写getText和setText方法就行了,

以下是代码,有说明。

public class IpField extends JTextField {

private Format format = null; // [] 中的内容格式
private Dimension fieldSize = new Dimension(20, 14);
private Dimension dotSize = new Dimension(3, 14);
private int paddingTop = 3;

private JTextField jt1 = null; //一共有4个 []
private JTextField jt2 = null;
private JTextField jt3 = null;
private JTextField jt4 = null;

public IpField() {
super("");
this.setSize(100, 19);
this.setPreferredSize(this.getSize());

this.setLayout(null);
//this.setEditable(false);
this.setBackground(Color.white);

jt1 = new IpFormattedField(127, 1);
jt2 = new IpFormattedField(127, 26);
jt3 = new IpFormattedField(127, 51);
jt4 = new IpFormattedField(127, 76);

this.add(jt1, null);
this.add(new IPDotField(22), null);
this.add(jt2, null);
this.add(new IPDotField(47), null);
this.add(jt3, null);
this.add(new IPDotField(72), null);
this.add(jt4, null);
}

// 这是格式,只能输入##0的数字,没有就为0
private Format getFormat() {
if(format == null) {
try {
format = new DecimalFormat("##0");
} catch(Exception ex) {
}
}
return format;
}

public String getText() { // 重写getText
super.setText("");
return jt1.getText()
.concat(jt2.getText())
.concat(jt3.getText())
.concat(jt4.getText());
}

public void setText(String ip) { // 重写setText
String[] fields = ip.split("\\.");
try { jt1.setText(fields[0]); } catch(Exception ex) {}
try { jt2.setText(fields[1]); } catch(Exception ex) {}
try { jt3.setText(fields[2]); } catch(Exception ex) {}
try { jt4.setText(fields[3]); } catch(Exception ex) {}
}

class IpFormattedField extends JFormattedTextField {
IpFormattedField(int defaultValue, int x) {
super(getFormat());
this.setValue(defaultValue);
this.setBorder(null);
this.setSize(fieldSize);
this.setPreferredSize(fieldSize);
this.setLocation(x, paddingTop);
this.setHorizontalAlignment(JTextField.CENTER);
// 在中间对齐,为了美观,可以更好看
this.setColumns(3);

this.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(KeyEvent e) {
String txt = getText();
if(txt.length() > 3)
{//如果超过3的长度,只取前3位
setText(txt.substring(0, 3));
}
else
{//如果大于255,改为255,如果非数字,交给formated处理
try {
int i = Integer.parseInt(txt);
if(i > 255)
setText("255");
} catch(Exception ex) {
}
}
}
});
}
}

class IPDotField extends Label {
IPDotField(int x) {
super(".");
this.setAlignment(Label.CENTER);
this.setSize(dotSize);
this.setPreferredSize(dotSize);
this.setLocation(x, paddingTop);
}
}

}
Labels:
Trackback:   http://cwq.iou1314.com/_a133
微博最近更新
[2010-09-06 16:08]    明天有市领导来,后天又有省领导来,今天一个下午就拉了5条大横幅,累死我了,上周星期6,7办公室都要上班,这种生活什么时候可以摆脱?
[2010-09-04 04:43]    又是要加班的双休日,昨晚和领导去县城做资料做到11:30,确定这两天都要加班,刚准备回家,跟着领导接 电话说有村民想自杀不成,已带到卫生院,又跟领导回乡镇处理劝说一下。搞完到了1:30。回来凉都冲就睡 觉了。
本站内的任何文章,只代表个人意见或学习所用,如有版权声明,请尊重作者的劳动成果,在转载时请保留原始链接并注明出处。
Power by David's PhpCms, © 2007 - 2010 CWQ.IOU1314.COM All Rights Reserved.