⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java入门(9) java与gui.htm

📁 一本很容易入手
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      <BR><BR>  口令文本框(JPasswordField)是一种特殊的文本框,在口令文本框中输入任何字符串都将显示成为“*”,这样就可以不让别人知道你输入的是什么,这种文本框比较适合与密码、口令的输入,所以称之为口令文本框。 
      <BR><BR>  为了安全起见,获取口令文本框中的密码(口令)使用的方法与普通文本框不同。它使用方法:getPassword()。 
      <BR><BR>  “越麻烦越安全”,所以,Java语言中为你获取口令再添加了一层麻烦(我看来是一种不必要的麻烦),getPassword()方法将返回一个char数组,我们还得将其转换成为字符串。以下就是一个转换的实例: 
      <BR><BR><BR>String passwd=new String(passwdTextField.getPassword()) 
      <BR><BR><BR><BR>  9.6.3 文本区 <BR><BR>  实例说明 
      <BR><BR>  正如我们看到的一样,普通文本框TextField只能输入一行,如果要提供一个多行的输入界面,那怎么办呢?下面我们就看一下下面这个程序: 
      <BR><BR>  源程序:useTextArea.java <BR><BR><BR>import javax.swing.*; 
      <BR>import java.awt.*; <BR>import java.awt.event.*; <BR>public class 
      useTextarea extends JApplet <BR>{ <BR>JButton buttonClear; <BR>JTextArea 
      textarea1; <BR>public void init() <BR>{ <BR>JPanel 
      panel1=(JPanel)getContentPane(); <BR>panel1.setLayout(new FlowLayout()); 
      <BR>buttonClear=new JButton("Clear all"); <BR>textarea1=new 
      JTextArea("Enter new text",5,15); <BR>panel1.add(textarea1); 
      <BR>panel1.add(buttonClear); <BR>buttonClear.addActionListener(new 
      ActionListener() <BR>{ <BR>public void actionPerformed(ActionEvent evt) 
      <BR>{ <BR>textarea1.setText(""); <BR>} <BR>}); <BR>} <BR>} 
      <BR><BR><BR><BR>  2.使用javac编译这个程序,然后编辑一个显示这个Java 
      Applet的HTML页面,建议高度为100,宽度为300。 
      <BR><BR>  3.最后我们再使用appletviewer来运行这个程序,这个程序的输出如下图所示: <BR><BR><BR>  图9-14 
      程序useTextarea.java的运行结果 <BR><BR>  接着,我们就可以在这个文本区内写多行文本了。大家在按下“Clear 
      all”按钮之前,想一下,会发现什么结果? <BR><BR>  传授新知 
      <BR><BR>  这个程序中,主要需要说明的只有关于TextArea部件(文本区)的一些语句: <BR><BR>  1) 
      <BR><BR><BR>JTextArea textarea1; <BR>…… <BR>textarea1=new JTextArea("Enter 
      new text",5,15); 
      <BR><BR><BR><BR>  首先,我们定义了一个JTextArea类的对象textarea1,然后使用new操作符来创建这个对象textarea1(也就是一个文本区)。与文本框类似,文本区的构造器也有三种: 
      <BR><BR>  A. JTextField(int rows,int columns) 
      <BR><BR>  在这个构造器中,有两个整型参数rows(这个单词的中文意思是行)和columns(这个单词的中文意思是列),也就是说,这两参数用来指令文本区的行数,与列宽。 
      <BR><BR>  这里的列宽与文本框一样,是一种长度,用能够显示多少个个小写“m”(当前选择的字体)来衡量的宽度。而行数,就很好理解了,就是能够输入的行数。 
      <BR><BR>  要注意的是,这里的行数、列数都是只显示出来的框的大小。如果一行中超过了列宽,将会使文本区变得越来越宽,如下图所示: 
      <BR><BR><BR>  图9-15 超过了列宽 
      <BR><BR>  由于输入的文本超过了文本区原来的宽度,使得文本区变得越来越宽,把按钮都挤到下一行中去了。 <BR><BR>  注意: 
      <BR><BR>  如果把多出来的文本删除掉后,文本区将变成原来的大小。 <BR><BR>  同样的,如果输入太多行,将引起如下图所示的情况: 
      <BR><BR><BR>  图9-16 超过了行数 <BR><BR>  B. JTextArea(String text) 
      <BR><BR>  也可以只带一个字符串型参数text调用构造器方法,这个字符串将会在程序一执行时就显示在文本区中。 <BR><BR>  C. 
      JTextField(String text ,int rows,int columns) 
      <BR><BR>  而如果你既想设置默认的字符串,又想设置它的宽度,就可以调用第三种构造器。在本例中,我们就是调用这个构造器,构建了一个5行,15个“m”宽的文本区,让其一启动就显示一段文本:“Enter 
      new text”。 <BR><BR>  注意: <BR><BR>  同样的,调用JTextArea的构造器时,一定要带上参数,否则将会出错。 
      <BR><BR>  2) <BR><BR><BR>buttonClear.addActionListener(new 
      ActionListener() <BR>{ <BR>public void actionPerformed(ActionEvent evt) 
      <BR>{ <BR>textarea1.setText(""); <BR>} <BR>}); 
      <BR><BR><BR><BR>  在这一段程序中,我们为按钮buttonClear增加了一个监测器,使得当这个按钮按下时就执行:textarea1.setText(“”)。与文本框TextField一样,文本区TextArea也提供了设置显示文本的方法:setText(String 
      text)。 <BR><BR>  大家想想,将显示文本设置为“”,意味着什么,对!就是让其什么也不显示,这也就是前面那个问题(大家在按下“Clear 
      all”按钮之前,想一下,会发现什么结果?)的答案。 
      <BR><BR>  到现在,我们已经读懂了这个程序,但通过执行程序时,我们发现了一个十分不好的问题,那就是在文本区内不会自动换行。我们并不希望文本区变得越来越宽! 
      <BR><BR>  怎么办呢?Java为文本区TextArea提供了一个方法,使得自动换行成为可能: 
      <BR><BR><BR>textarea1.setLineWrap(true) 
      <BR><BR><BR><BR>  只需将这条语句加入程序,就会使得我们编辑到右边时会自动换行。如果我们要恢复成不自动换行,就调用: 
      <BR><BR><BR>textarea1.setLineWrap(false) <BR><BR><BR><BR>  自测练习 
      <BR><BR>  1) 部件____________适合于提供密码输入界面。 <BR><BR>  a. JTextArea 
      b.JTextField c.JPasswordField <BR><BR>  2) 在文本区中________输入超过程序中定义的行数。 
      <BR><BR>  a.能 b.不能 <BR><BR>  3) 我们可以使用______________来清除文本框text1中的文本。 
      <BR><BR>  a.text1.clearText() b.text1.setText(“”) 
      <BR><BR>  c.text1.deleteText() d.以上都可以 <BR><BR>  4) 
      如果我们调用____________来获得口令文本框passwd1中的文本。 <BR><BR>  a.passwd1.getText() 
      b.passwd1.getPassword() <BR><BR>  5) 
      在程序中_______________,就能够防止因为在一行中输入过多的文本,而使文本区textarea1变宽。 
      <BR><BR>  a.不需要做任何考虑 b.textarea1.setLineWrap(true) 
      <BR><BR>  c.textarea1.setLineWrap(false) d.textarea1.noWrap() <BR><BR>  6) 
      如果我们使用textfield1=new JTextField(“TEST”)来创建一个文本框,那么这个文本框的宽度有多大? 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  7) 
      请在程序useTextarea.java中加入textarea1.setLineWrap(true),然后再执行这个程序,发现一下,还存在什么样的问题。 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  8) 根据以下要求,编写程序 
      <BR><BR>  设置两个文本框,一个用来输入UserName,另一个用来输入Password;再设置一个按钮OK和一个文本区。 
      <BR><BR>  如果我们按下OK按钮,则右边的文本区中就会显示: <BR><BR>  UserName:用户名 
      <BR><BR>  Password:密码 <BR><BR>  其中用户名、密码就是用户输入的内容,如果没有输入则不显示。程序输出如下图所示: 
      <BR><BR><BR>  图9-17 程序lianxi905.java的输出 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  ____________________________________________________________________ 
      <BR><BR>  练习答案 <BR><BR>  1)c 
      由于输入密码的地方,应该不能明文显示,否则容易被边上的人从偷看到,我们可以借助Java中提供的口令文本框PasswordField来实现。这样,你输入的内容就变成了星号,不怕被人偷看到了。 
      <BR><BR>  2)a 能,而且会使得文本区的行数增加。 <BR><BR>  3)b 
      一个文本框并不存在cleatText()方法,也没有提供delete()方法,但我们可以通过调用setText(“”)来实现,这是因为,我们让它显示的文本变成了“”。也就空文本,这难道不是清除所有文本吗? 
      <BR><BR>  4)b 口令文本框要使用特殊的方法getPassword()来获得口令文本。 <BR><BR>  5)b 
      通过使文本区自动换行,就可以有效地避免这个问题。 <BR><BR>  6)这个文本框的宽度就是字符串“TEST”的大小。如下图所示: 
      <BR><BR><BR>  图9-18 练习答案参考图(1) 
      <BR><BR>  7)还存在一个问题,那就是这个程序十分愚笨,它虽然会自动换行,但是却常把一个单词分在两行里,如下图所示: 
      <BR><BR><BR>  图9-19 练习答案参考图(2) <BR><BR>   一些提示: 
      <BR><BR>  其实文本区部件还提供了一个方法来解决这个问题,那就是: <BR><BR><BR>public void 
      setWrapStyleWord(boolean word) 
      <BR><BR><BR><BR>  如果在程序中,加入textarea1.setWrapStyleWord(true),那么程序输入则是: 
      <BR><BR><BR>  图9-20 练习答案参考图(3) <BR><BR>  怎么样,效果是不是更好了! <BR><BR>  8) 
      请参考以下实现实例: <BR><BR>  源程序:lianxi905.java <BR><BR><BR>import javax.swing.*; 
      <BR>import java.awt.*; <BR>import java.awt.event.*; <BR>public class 
      lianxi905 extends JApplet <BR>{ <BR>Label label1,label2; <BR>JTextField 
      username; <BR>JPasswordField passwd; <BR>JButton buttonOK; <BR>JTextArea 
      showResult; <BR>String out; <BR>public void init() <BR>{ <BR>JPanel 
      panel1=(JPanel)getContentPane(); <BR>panel1.setLayout(new FlowLayout()); 
      <BR>label1=new Label("Please input your name:"); <BR>username=new 
      JTextField(15); <BR>label2=new Label("Please input your password:"); 
      <BR>passwd=new JPasswordField(15); <BR>buttonOK=new JButton("OK"); 
      <BR>showResult=new JTextArea(2,15); <BR>panel1.add(label1); 
      <BR>panel1.add(username); <BR>panel1.add(label2); <BR>panel1.add(passwd); 
      <BR>panel1.add(buttonOK); <BR>panel1.add(showResult); 
      <BR>buttonOK.addActionListener(new ActionListener() <BR>{ <BR>public void 
      actionPerformed(ActionEvent evt) <BR>{ <BR>out="Username: 
      "+username.getText()+" "; <BR>out=out+"Password: "+new 
      String(passwd.getPassword()); <BR>showResult.setText(out); <BR>} <BR>}); 
      <BR>} <BR>} 
      <BR><BR><BR><BR>  请大家注意到,我们是如何生成在文本区showResult显示的文本信息(存放在字符串变量out中)的: 
      <BR><BR><BR>out="Username: "+username.getText()+" "; 
      <BR>out=out+"Password: "+new String(passwd.getPassword()); 
      <BR><BR><BR><BR>  先让out等于“Username:”+username.getText(),这就使其包含了提示字符“Username:”,而后面的内容是另一部分的,所以我们在这个后面加上了“ 
      ”,这是一个转义符,代表回车(也就是另起一行)。 
      <BR><BR>  然后再将其加上提示字符“Password:”,最后是调用了getPassword()方法,然后将其转换为字符串型。 <BR>
      <P align=right>整理发布:admin</P></TD></TR>
  <TR>
    <TD 
    style="BORDER-RIGHT: #c0c0c0 1px solid; BORDER-TOP: #c0c0c0 1px solid; BORDER-LEFT: #c0c0c0 1px solid; BORDER-BOTTOM: #c0c0c0 1px solid" 
    vAlign=top width="100%" height=11>
      <P align=left><FONT color=#7a7978>文摘分类&gt;&gt; </FONT><FONT 
      color=#999999>编程基础&nbsp; | </FONT><FONT color=#7a7978>阅读次数&gt;&gt; 
      </FONT><FONT color=#999999>485&nbsp; | </FONT><FONT 
      color=#7a7978>推荐人数&gt;&gt; </FONT><FONT color=#999999>0&nbsp; | 
      </FONT><FONT color=#7a7978>整理日期&gt;&gt; </FONT><FONT 
      color=#999999>2003-03-07</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P align=center><INPUT class=rim onclick=window.close() type=button value=关闭窗口 name=close></P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -