免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8112 | 回复: 19
打印 上一主题 下一主题

请教:设置文本框中光标的位置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-01 16:57 |只看该作者 |倒序浏览
我有个文本框,这个文本框中初始化了一串字符,我想打开窗口时,默认光标位置正好紧跟在那一串字符的后面.

请问:可实现吗?     

能不能大致说下呀?

谢谢     

论坛徽章:
0
2 [报告]
发表于 2004-11-02 08:52 |只看该作者

请教:设置文本框中光标的位置

是TextField还是JTextField?

论坛徽章:
0
3 [报告]
发表于 2004-11-02 08:52 |只看该作者

请教:设置文本框中光标的位置

如果是JTextField可以用:
JTextField.setCaretPosition(JTextField.getText().length())

论坛徽章:
0
4 [报告]
发表于 2004-11-02 09:10 |只看该作者

请教:设置文本框中光标的位置

她用的是JTextArea,我查了下jdk文档,JtextArea没有继承这个方法,

论坛徽章:
0
5 [报告]
发表于 2004-11-02 09:31 |只看该作者

请教:设置文本框中光标的位置


  1. import java.awt.BorderLayout;
  2. import java.awt.Component;
  3. import java.awt.HeadlessException;
  4. import java.awt.TextField;
  5. import java.awt.event.WindowAdapter;
  6. import java.awt.event.WindowEvent;

  7. import javax.swing.JFrame;
  8. import javax.swing.JTextArea;
  9. import javax.swing.JTextField;


  10. public class JTextFieldCursorTest extends JFrame {

  11.         private static final String FIELD_CONTENT = "Cursor should reside at the end of line";

  12.         /**
  13.          * @param title
  14.          * @throws java.awt.HeadlessException
  15.          */
  16.         public JTextFieldCursorTest(String title) throws HeadlessException {
  17.                 super(title);
  18.                 //uncomment 1,2 or 3 to test caret position for JTextField, TextField
  19.                 // or JtextArea
  20.                 //getContentPane().add(getJtf(), BorderLayout.NORTH); //1
  21.                 //getContentPane().add(getTf(), BorderLayout.SOUTH); //2
  22.                 getContentPane().add(getJta(), BorderLayout.CENTER); //3
  23.                 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  24.         }

  25.         /**
  26.          * @return
  27.          */
  28.         private Component getJta() {
  29.                 JTextArea jta = new JTextArea();
  30.                 jta.setText(FIELD_CONTENT + " \n\t- JTextArea");
  31.                 jta.setCaretPosition(jta.getText().length());
  32.                 return jta;
  33.         }

  34.         /**
  35.          * @return
  36.          */
  37.         private Component getTf() {
  38.                 final TextField tf = new TextField();
  39.                 tf.setText(FIELD_CONTENT + " - TextField");
  40.                 this.addWindowListener(new WindowAdapter() {
  41.                         public void windowOpened(WindowEvent e) {
  42.                                 tf.setCaretPosition(tf.getText().length());
  43.                         }
  44.                 });
  45.                 return tf;
  46.         }

  47.         /**
  48.          * @return
  49.          */
  50.         private Component getJtf() {
  51.                 JTextField jt = new JTextField();
  52.                 jt.setText(FIELD_CONTENT + " - JTextField");
  53.                 return jt;
  54.         }

  55.         public static void main(String[] args) {
  56.                 JTextFieldCursorTest jtfct = new JTextFieldCursorTest(
  57.                                 "TextComponent Cursor Test");
  58.                 jtfct.setBounds(100, 100, 360, 240);
  59.                 jtfct.show();

  60.         }
  61. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2004-11-02 09:45 |只看该作者

请教:设置文本框中光标的位置

非常感谢.

呵呵

论坛徽章:
0
7 [报告]
发表于 2004-11-02 09:54 |只看该作者

请教:设置文本框中光标的位置

在TextComponent.java中有这样一段代码:
TextComponentPeer peer = (TextComponentPeer)this.peer;
        if (peer != null) {
            peer.setCaretPosition(position);
        } else {
            throw new IllegalComponentStateException("Cannot set caret position until after the peer has been created";
        }
    }

我想问的是这里面peer指的是什么意思呀?

论坛徽章:
0
8 [报告]
发表于 2004-11-02 10:25 |只看该作者

请教:设置文本框中光标的位置

http://blog.csdn.net/chinasilver/archive/2003/07/07/20997.aspx
这个讲的比较简单。

论坛徽章:
0
9 [报告]
发表于 2004-11-03 09:22 |只看该作者

请教:设置文本框中光标的位置

谢谢了,

下面是我截的两行代码(紧连的)

1  this.getTextArea().setText("Create Procedure ";
2  this.getTextArea().setCaretPosition(this.getTextArea().getText().
    length());

第一行没问题,运行到第二行抛出异常,我跟踪出来的就是在下面地方抛出的
TextComponentPeer peer = (TextComponentPeer)this.peer;
        if (peer != null) {
            peer.setCaretPosition(position);
        } else {
            throw new IllegalComponentStateException("Cannot set caret position until after the peer has been created";

谁能帮我解释下

这段代码的意图吗?

这里判断 peer为不为空的具体意思是什么呀?

    

论坛徽章:
0
10 [报告]
发表于 2004-11-04 19:48 |只看该作者

请教:设置文本框中光标的位置

为什么在那个地方 会产生 peer为空呢?

上面的peer就不会呢?

想不出来呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP