手机百度中的我百度云中的关注在哪里里?

>> JTextField、JTextArea 使用详解
JTextField、JTextArea 使用详解
在图形界面中,文本框和文本区是用于信息输入输出的组件。
文本框(JTextField)是界面中用于输入和输出一行文本的框。JTextField类用来建立文本框。与文本框相关的接口是ActionListener。
文本框处理程序的基本内容有以下几个方面:
声明一个文本框名。
建立一个文本框对象。
将文本框对象加入到某个容器。
对需要控制的文本框对象注册监视器,监听文本框的输入结束(即输入回车键)事件。
一个处理文本框事件的方法,完成对截获事件进行判断和处理。
JTextField类的主要构造方法:
JTextField(),文本框的字符长度为1。
JTextField(int columns),文本框初始值为空字符串,文本框的字符长度设为columns.
JTextField(String text),文本框初始值为text的字符串。
JTextField(String text,int columns);文本框初始值为text,文本框的字符长度为columns。
JTextField类的其他方法:
setFont(Font f),设置字体
setText(String text),在文本框中设置文本
getText(),获取文本框中的文本。
setEditable(boolean),指定文本框的可编辑性,默认为true,可编辑。
setHorizontalAlignment(int alignment)设置文本对齐方式。对齐方式有:JTextField.LEFT, JTextField.CENTER, JTextField.RIGHT。
requestFocus(),设置焦点。
addActionListener(ActionListener ),为文本框设置动作监视器,指定ActionListener对象接收该文本框上发生的输入结束动作事件。
removeActionListener(ActionListener)移去文本框监视器。
getColumns(),返回文本框的列数。
getMinimumSize(),返回文本框所需的最小尺寸。
getMinimumSize(int), 返回文本框在指定的字符数情况下,所需的最小尺寸。
getPreferredSize(),返回文本框希望具有的尺寸。
getPreferredSize(int),返回文本框在指定字符数情况下,希望具有的尺寸。
【例 11-8】小应用程序有两个文本框。一个文本用于输入一个整数,另一个文本框显示这个整数的平方值。程序用字符串转基本类型的方法Long.parseLong(text1.getText()),读取文本框text1中的字符串,并将它转换成整数。程序用Sqr类的实例作为监视器,但为了让监视器能访问主类的变量,主类中的变量被声明为类变量,并且不设置访问权限()。
密码框(JPasswordField)是一个单行的输入组件,与JTextField基本类似。密码框多一个屏蔽功能,就是在输入时,都会以一个别的指定的字符(一般是*字符)输出。除了前面介绍的文本框的方法外,另有一些密码框常用的方法:
getEchoChar(),返回密码的回显字符。
setEchoChar(char),设置密码框的回显字符。
文本区(JTextArea)是窗体中一个放置文本的区域。文本区与文本框的主要区别是文本区可存放多行文本。javax.swing包中的JTextArea类用来建立文本区。JTextArea组件没有事件。
文本区处理程序的基本内容有以下几个方面:
声明一个文本区名。
建立一个文本区对象。
将文本区对象加入到某个容器。
JTextArea类的主要构造方法:
JTextArea(),以默认的列数和行数,创建一个文本区对象。
JTextArea(String s),以s为初始值,创建一个文本区对象。
JTextArea(Strings ,int x,int y),以s为初始值,行数为x,列数为y,创建一个文本区对象。
JTextArea(int x,int y)以行数为x,以列数为y,创建一个文本区对象。
JTextArea类的其他常用方法:
setText(String s),设置显示文本,同时清除原有文本。
getText(),获取文本区的文本。
insert(String s,int x),在指定的位置插入指定的文本。
replace(String s,int x,int y),用给定的一替换从x位置开始到y位置结束的文本。
append(String s),在文本区追加文本。
getCarePosition(),获取文本区中活动光标的位置。
setCarePosition(int n),设置活动光标的位置。
setLineWrap(boolean b),设置自动换行,缺省情况,不自动换行。
以下代码创建一个文本区,并设置能自动换行。
JTextArea textA = new JTextArea(“我是一个文本区”,10,15);
textA.setLineWrap(true);//设置自动换行
当文本区中的内容较多,不能在文本区全部显示时,可给文本区配上滚动条。给文本区设置滚动条可用以下代码:
JTextArea ta = new JTextArea();
JScrollPane jsp = new JScrollPane(ta);//给文本区添加滚动条
转载请注明出处: | 网
才能留言!
最佳热度排行
最新抢先看
近期热门趋势
最新冷度排行2612人阅读
Java-Swing(11)
JTextField中提供了一个setDocument(Document doc)的方法,利用该方法我们可以设置文本框输入特定的字符。
通常我们继承PlainDocument并重写他的insertString(int offs, String str, AttributeSet a)
offs - 起始偏移量,该值 &= 0
str - 要插入的字符串;
a - 插入内容的属性
以下是继承该类所实现的两个子类代码:
import java.util.regex.M
import java.util.regex.P
import javax.swing.text.AttributeS
import javax.swing.text.BadLocationE
import javax.swing.text.PlainD
* 自己定义的文本
* @author Administrator
public class MyDocument {
* 能输入小数的文本
public static class DoubleOnlyDocument extends PlainDocument {
public void insertString(int offset, String s, AttributeSet attrSet) throws BadLocationException {
//获得文本框中的值
String text = this.getText(0, offset);
String reg = &\\.&;
Pattern pat = pile(reg);
Matcher mat = pat.matcher(text);
//判断文本框中是否含有小数点
boolean point =
if(mat.find()) {
//如果偏移量不为0,并且无小数点时,如果当前输入的为小数点,则添加进文本框并返回,不进行之后的操作
if(offset != 0 && !point) {
if(s.equals(&.&)) {
//调用父类方法将字符插入文本框中
super.insertString(offset, s, attrSet);
//将字符串解析成数字是否会抛出异常,抛出异常则说明该字符不为数字,返回,否则插入文本框中
Integer.parseInt(s);
} catch (NumberFormatException ex) {
super.insertString(offset, s, attrSet);
* 只能输入数字
public static class NumOnlyDocument extends PlainDocument {
public void insertString(int offset, String s, AttributeSet attrSet) throws BadLocationException {
Integer.parseInt(s);
} catch (NumberFormatException ex) {
super.insertString(offset, s, attrSet);
接下来通过setDoucument(new MyDocument.DoubleOnlyDocument())来控制文本框中输入的字符了。
需要注意的是:
1、如果有多个文本框时,每一个JTextField都需要设置一个自己的Document,否则某一个文本框输入值时,其他文本框的值也会改变
2、如果先设置文本框的值,再设置Document,则文本框中的值将变为空。
jTextField.setText(&1111&);
JTextField.setDoucument(new MyDocument.NumOnlyDocument());
//此时jTextField文本框中显示出来的值就为空
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:131771次
积分:1838
积分:1838
排名:千里之外
原创:46篇
转载:50篇
评论:33条
(1)(3)(1)(2)(1)(1)(1)(2)(1)(6)(2)(2)(1)(3)(3)(3)(7)(2)(4)(7)(4)(6)(3)(3)(3)(4)(11)(1)(6)(4)JAVA问题,在swing如何获取JTextField文本框的值?像用户名啊,还有密码框?
本回答由提问者推荐swing下面,JTextField无法获取焦点..完整代码..packagecom.shhhes.im.importjava.awt.AWTEimportjava.a
问题描述swing下面,JTextField无法获取焦点..完整代码..packagecom.shhhes.im.importjava.awt.AWTEimportjava.awt.BorderLimportjava.awt.Cimportjava.awt.Cimportjava.awt.Dimportjava.awt.FlowLimportjava.awt.Fimportjava.awt.SystemTimportjava.awt.TrayIimportjava.awt.event.MouseAimportjava.awt.event.MouseEimportjava.awt.geom.RoundRectangle2D;importjavax.swing.Bimportjavax.swing.ImageIimportjavax.swing.JBimportjavax.swing.JCheckBimportjavax.swing.JLimportjavax.swing.JMenuIimportjavax.swing.JPimportjavax.swing.JPasswordFimportjavax.swing.JTextFimportjavax.swing.JWimportjavax.swing.border.LineBimportcom.shhhes.im.listener.WindowMoveLimportcom.shhhes.im.utils.FontUimportcom.shhhes.im.utils.JButtonUimportcom.shhhes.im.utils.WindowUimportcom.sun.awt.AWTU/***登陆界面*@author马凯**/publicclassLoginWindowextendsJWindow{/***启动*@paramargs*/publicstaticvoidmain(String[]args){newLoginWindow().launchWindow();}/***加载窗体*/privatevoidlaunchWindow(){initWindow();//initSystemTray();setContentPane(createMainPanel());setVisible(true);}/***初始化系统托盘*/privatevoidinitSystemTray(){if(!SystemTray.isSupported()){}SystemTraysystemTray=SystemTray.getSystemTray();TrayIcontrayIcon=newTrayIcon(newImageIcon("images/Login/status/offline16.png").getImage(),"QQ2013");try{systemTray.add(trayIcon);}catch(AWTExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}trayIcon.addMouseListener(newMouseAdapter(){@OverridepublicvoidmouseReleased(MouseEvente){if(e.isMetaDown()){JWindowwindow=newJWindow();BoxbaseBox=Box.createVerticalBox();baseBox.setBackground(Color.white);ContainercontentPane=window.getContentPane();contentPane.add(baseBox);JMenuItemonlineItem=newJMenuItem("我在线上");onlineItem.setFont(FontUtil.getYaHei());onlineItem.setIcon(newImageIcon("images/Login/status/imonline.png"));baseBox.add(onlineItem);JMenuItemqmeItem=newJMenuItem("Q我吧");qmeItem.setFont(FontUtil.getYaHei());qmeItem.setIcon(newImageIcon("images/Login/status/Qme.png"));baseBox.add(qmeItem);JMenuItemawayItem=newJMenuItem("离开");awayItem.setFont(FontUtil.getYaHei());awayItem.setIcon(newImageIcon("images/Login/status/away.png"));baseBox.add(awayItem);JMenuItembusyItem=newJMenuItem("忙碌");busyItem.setFont(FontUtil.getYaHei());busyItem.setIcon(newImageIcon("images/Login/status/busy.png"));baseBox.add(busyItem);JMenuItemmuteItem=newJMenuItem("请勿打扰");muteItem.setFont(FontUtil.getYaHei());muteItem.setIcon(newImageIcon("images/Login/status/mute.png"));baseBox.add(muteItem);window.pack();Dimensiond=window.getSize();window.setAlwaysOnTop(true);window.setLocation(e.getX()-(int)d.getWidth(),e.getY()-(int)d.getHeight());window.setVisible(true);}}});}/***最外层的主Panel*@return*/privateJPanelcreateMainPanel(){ImageJPanelpanel=newImageJPanel();panel.setLayout(newBorderLayout());panel.setImage("images/Login/background/noon.jpg");panel.add(createTopPanel(),BorderLayout.NORTH);panel.add(createCenterPanel());panel.add(createBottomPanel(),BorderLayout.SOUTH);}/***中间用户输入和头像的Panel*@return*/privateJPanelcreateCenterPanel(){JPanelpanel=newJPanel();panel.setLayout(newBorderLayout());panel.setOpaque(false);//设置透明panel.add(createUserImagePanel(),BorderLayout.WEST);//左边头像panel.add(createUserInfoPanel());//中间,工号,密码panel.add(createLinkPanel(),BorderLayout.EAST);//右边注册,找回密码链接}/***创建链接的Panel*@return*/privateJPanelcreateLinkPanel(){JPanelpanel=newJPanel();panel.setLayout(null);panel.setOpaque(false);//设置透明panel.setPreferredSize(newDimension(71,170));//注册按钮JButtonregButton=JButtonUtil.getImageButton("images/Login/zhuce_normal.png","images/Login/zhuce_press.png","images/Login/zhuce_hover.png");regButton.setBounds(0,110,51,16);panel.add(regButton);//密码找回按钮JButtonfindPwdButton=JButtonUtil.getImageButton("images/Login/mima_normal.png","images/Login/mima_press.png","images/Login/mima_hover.png");findPwdButton.setBounds(0,145,51,16);panel.add(findPwdButton);}/***用户信息*@return*/privateJPanelcreateUserInfoPanel(){JPanelpanel=newJPanel();panel.setOpaque(false);//设置透明panel.setLayout(null);panel.setPreferredSize(newDimension(195,251));//帐号JTextFieldusercode=newJTextField();usercode.setBorder(newLineBorder(Color.GRAY,1));usercode.setFont(newFont("Verdana",Font.PLAIN,12));usercode.setForeground(Color.black);usercode.setBounds(10,108,185,26);panel.add(usercode);//密码输入框JPasswordFieldpwdfPassword=newJPasswordField("");pwdfPassword.requestFocus(true);pwdfPassword.setBorder(newLineBorder(Color.GRAY,1));pwdfPassword.setFont(FontUtil.getYaHei());pwdfPassword.setForeground(Color.black);pwdfPassword.setEchoChar('*');pwdfPassword.setBounds(10,141,185,26);panel.add(pwdfPassword);//记住密码复选框finalJCheckBoxrememberPasswordCheckBox=JButtonUtil.getIconCheckBox("images/Login/checkbox_normal.png","images/Login/checkbox_hover.png","images/Login/checkbox_press.png","images/Login/checkbox_selected_hover.png");rememberPasswordCheckBox.setBounds(10,170,15,15);panel.add(rememberPasswordCheckBox);//记住密码标签JLabelrememberPasswordLabel=newJLabel("记住密码");rememberPasswordLabel.setFont(FontUtil.getYaHei());rememberPasswordLabel.setForeground(Color.black);rememberPasswordLabel.setBounds(30,170,48,15);panel.add(rememberPasswordLabel);rememberPasswordLabel.addMouseListener(newMouseAdapter(){//优化点击效果@OverridepublicvoidmouseReleased(MouseEvente){rememberPasswordCheckBox.setSelected(!rememberPasswordCheckBox.isSelected());}});//自动登陆复选框finalJCheckBoxautoLoginCheckBox=JButtonUtil.getIconCheckBox("images/Login/checkbox_normal.png","images/Login/checkbox_hover.png","images/Login/checkbox_press.png","images/Login/checkbox_selected_hover.png");panel.add(autoLoginCheckBox);autoLoginCheckBox.setBounds(90,170,15,15);//自动登陆标签JLabelautoLoginLabel=newJLabel("自动登录");autoLoginLabel.setFont(FontUtil.getYaHei());autoLoginLabel.setForeground(Color.black);panel.add(autoLoginLabel);autoLoginLabel.setBounds(110,170,48,15);autoLoginLabel.addMouseListener(newMouseAdapter(){//优化点击效果@OverridepublicvoidmouseReleased(MouseEvente){autoLoginCheckBox.setSelected(!autoLoginCheckBox.isSelected());}});}/***用户头像Panel*@return*/privateJPanelcreateUserImagePanel(){JPanelpanel=newJPanel();panel.setPreferredSize(newDimension(104,84));//不设置大小和layout,JPanel默认为0panel.setLayout(null);//不要布局管理器panel.setOpaque(false);//设置透明//用户头像图JLabeluserImage=newJLabel(newImageIcon("images/Login/qqhead.png"));panel.add(userImage);userImage.setBounds(22,107,80,79);//用户头像背景图JLabeluserImageBack=newJLabel(newImageIcon("images/Login/login_head_white.png"));panel.add(userImageBack);userImageBack.setBounds(21,103,84,84);}/***创建顶部面板*@return*/privateJPanelcreateTopPanel(){JPanelpanel=newJPanel();panel.setLayout(newFlowLayout(FlowLayout.RIGHT));//设置右对齐panel.setOpaque(false);//设置透明//最小化按钮JButtonminBtn=JButtonUtil.getMinButton(this);panel.add(minBtn);minBtn.setBounds(315,-2,28,20);//关闭按钮JButtoncloseBtn=JButtonUtil.getClosedButton(this);panel.add(closeBtn);closeBtn.setBounds(342,-2,39,20);}/***创建底部面板*@return*/privateJPanelcreateBottomPanel(){ImageJPanelpanel=newImageJPanel();panel.setImage("images/Login/loginbutton_background.jpg");panel.setPreferredSize(newDimension(380,50));panel.setLayout(null);//添加登陆按钮JButtonbutton=JButtonUtil.getImageButton("images/Login/button_blue_normal.png","images/Login/button_blue_press.png","images/Login/button_blue_hover.png");button.setBounds(72,5,237,48);//添加登陆文字JLabellabel=newJLabel("登陆");label.setFont(FontUtil.getYaHei());label.setForeground(Color.BLACK);label.setBounds(163,16,100,25);panel.add(label);panel.add(button);}/***初始化信息窗口系统*/privatevoidinitWindow(){//设置大小this.setSize(380,292);//设置位置this.setLocation(WindowUtil.getScreenCenterPoint(this));//图标啊图标this.setIconImage(newImageIcon("images/Login/qqTitle.png").getImage());this.setAlwaysOnTop(true);//仿QQ圆角AWTUtilities.setWindowShape(this,newRoundRectangle2D.Double(0.0D,0.0D,this.getWidth(),this.getHeight(),10.0D,10.0D));//添加移动效果WindowMoveListenerlistener=newWindowMoveListener(this);this.addMouseListener(listener);this.addMouseMotionListener(listener);}}解决方案解决方案二:我试了一下,直接继承JWindow上放JTextField是没法输入的,我也是新手不太了解机制我换成JFrame就可以了设置两个基础的东西就好了this.setUndecorated(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);解决方案三:引用1楼ysiso9001的回复:我试了一下,直接继承JWindow上放JTextField是没法输入的,我也是新手不太了解机制我换成JFrame就可以了设置两个基础的东西就好了this.setUndecorated(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);+1
【云栖快讯】支撑千亿营收,阿里如何做研发?淘宝如何做敏捷实践?如何面对开发中的“黑天鹅”事件?6月29日首届阿里研发效能嘉年华,独家直播,赶紧预约吧!&&
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...

我要回帖

更多关于 手机悄悄关注在哪里 的文章

 

随机推荐