A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴光新 黑马帝   /  2013-6-28 04:13  /  2285 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Jiewin 于 2013-8-4 15:41 编辑


  1. <BLOCKQUOTE>
  2. import java.io.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. class MyWindow{
  6.         public static void sop(Object obj){System.out.println(obj);}
  7.         public static void main(String[] args) {new MyWindow();}
  8.         MyWindow() {init();}
  9.         
  10.         private Frame f;
  11.         private Button fb;
  12.         private TextField tf;
  13.         private TextArea ta;
  14.         private Dialog d;
  15.         private Button db;
  16.         private Label dl;
  17.         private String path1;
  18.         private String path2;
  19.         
  20.         //窗体
  21.         public void init(){
  22.                 //创建组件
  23.                 f = new Frame("扫描文件");                //主窗体(名称)
  24.                 d = new Dialog(f,"提示!",true);        //提示框
  25.                 tf = new TextField(70);                        //文本输入框(列数)
  26.                 ta = new TextArea(25,80);                //文本域(行数,列数)
  27.                 fb = new Button("遍历");                //按钮(文字)
  28.                 dl = new Label();                                //提示框标签
  29.                 db = new Button("确定");                //提示框确定        
  30.                 f.add(tf);
  31.                 f.add(fb);
  32.                 f.add(ta);
  33.                 d.add(dl);
  34.                 d.add(db);

  35.                 //设置主窗体属性
  36.                 f.setVisible(true);                                //显示窗体
  37.                 f.setBounds(300,200,600,500);        //左上角位置和大小
  38.                 f.setLayout(new FlowLayout());        //布局模式
  39.                 f.setBackground(Color.red);                //背景颜色
  40.                 f.setForeground(Color.blue);        //前景颜色
  41.                 f.setName("哈哈");                                //重设名称
  42.                
  43.                 //设置提示框属性        
  44.                 d.setBounds(600,300,250,150);        //设置窗口左上角和大小
  45.                 d.setResizable(false);                        //禁止调整窗体大小
  46.                 d.setLayout(new FlowLayout());        //设置布局模式
  47.                 d.setSize(200,100);                                //设置对话框大小
  48.                 d.setLocation(500,400);                        //重新设置对话框左上角,相对于屏幕
  49.                
  50.                 myEvent();
  51.         }

  52.         //监听器
  53.         private void myEvent(){
  54.                 //主窗体监听器
  55.                 f.addWindowListener(new WindowAdapter(){
  56.                         public void windowClosing(WindowEvent e){
  57.                                 System.exit(0);               
  58.                 }});
  59.                 //主窗体按钮监听器
  60.                 fb.addActionListener(new ActionListener(){
  61.                         public void actionPerformed(ActionEvent e){
  62.                                 butAction();
  63.                                 d.setVisible(false);
  64.                 }});
  65.                 //提示对话框窗体监听器
  66.                 d.addWindowListener(new WindowAdapter(){
  67.                         public void windowClosing(WindowEvent e){
  68.                                 d.setVisible(false);
  69.                 }});
  70.                 //提示对话框按钮监听器
  71.                 db.addActionListener(new ActionListener(){
  72.                         public void actionPerformed(ActionEvent e){
  73.                         
  74.                         d.setVisible(false);
  75.                         tf.requestFocus();//获取焦点
  76.                 }});
  77.                 //键盘监听器
  78.                 tf.addKeyListener(new KeyAdapter(){
  79.                         public void keyPressed(KeyEvent e){
  80.                                 if(e.getKeyCode()==KeyEvent.VK_ENTER)
  81.                                         butAction();
  82.                                         d.setVisible(false);
  83.                 }});
  84.         }
  85.         
  86.         /*提交按钮事件
  87.          *isDirectory()判断是否是目录
  88.          *exists()判断是否存在*/
  89.         public void butAction(){
  90.                 path1 = tf.getText();
  91.                 if(path1!=""){
  92.                         File path = new File(path1);
  93.                         if(path.exists() && path.isDirectory()){
  94.                                 tf.requestFocus();                        //文本框获取焦点,问题是怎么把焦点放在输入的内容的末尾?然后可以接着输入
  95.                                 path2 = path.toString();
  96.                                 ta.setText("");                        //先清空文本域的内容
  97.                                 String[] names = path.list();
  98.                                 for(String name : names)
  99.                                         ta.append(name+"\r\n");        //添加数据到文本域
  100.                         }else{        
  101.                                 tf.setText(path2);                        //如果路径无效,就设置文本框的内容为最后一次正确输入的路径
  102.                                 String d_Info = "你输入的:"+path+"不是有效路径!";
  103.                                 dl.setText(d_Info);        
  104.                                 d.setVisible(true);
  105.                         }
  106.                 }
  107.         }
  108. }
复制代码
这是视频第22天的10里的一个练习,就是在窗体里添加一个文本框,一个按钮,一个文本域,
在文本框里输入路径,点按钮在在文本域里显示该路径下的所有文件和文件夹,设置有各种监视器,

现在有两个问题不知道怎么解决,希望大家指点迷津
1、你们执行看看,在文本框里输入一个有效的路径,然后点遍历,或按Enter,能把数据写入到了文本域了,但现在的输入焦点在文本框的最开头,怎么才能放在末尾?
2、就像登录QQ输入密码,输错了就把密码框里的内容设置为选择状态,方便删除!怎么做呢?我想在点确定返回后选作文本框的内容(如果有数据)?

评分

参与人数 2技术分 +2 黑马币 +3 收起 理由
神之梦 + 1 + 3 很不错
Just_Only + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
本帖最后由 神之梦 于 2013-6-28 14:40 编辑

在API中找到两方法,不知道是不是楼主想要的:
public void setCaretPosition(int position)设置文本插入符的位置。
public void selectAll()选择此文本组件中的所有文本。
  1. /*提交按钮事件
  2.          *isDirectory()判断是否是目录
  3.          *exists()判断是否存在*/
  4.         public void butAction(){
  5.                 path1 = tf.getText();
  6.                 int position=tf.getCaretPosition();//返回文本插入符的位置。----------------
  7.                sop(position);
  8.                 if(path1!=""){
  9.                         File path = new File(path1);
  10.                         if(path.exists() && path.isDirectory()){
  11.                                 tf.requestFocus();                        //文本框获取焦点,问题是怎么把焦点放在输入的内容的末尾?然后可以接着输入
  12.                                 //tf.setCaretPosition(position);
  13.                                path2 = path.toString();
  14.                                 ta.setText("");                        //先清空文本域的内容
  15.                                 String[] names = path.list();
  16.                                 for(String name : names)
  17.                                         ta.append(name+"\r\n");        //添加数据到文本域
  18.                         }else{        
  19.                                 tf.setText(path1);                        //如果路径无效,就设置文本框的内容为最后一次正确输入的路径
  20.                                 tf.setCaretPosition(position);//设置文本插入符的位置。-------------------------
  21.                                 tf.selectAll();//选择此文本组件中的所有文本。--------------------------
  22.                                 String d_Info = "你输入的:"+path+"不是有效路径!";
  23.                                 dl.setText(d_Info);        
  24.                                 d.setVisible(true);
  25.                         }
  26.                 }
  27.         }
  28. <p> </p>
复制代码
回复 使用道具 举报
感谢版主大神,问题解决了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马