Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何在文本区域的新添加文本末尾自动显示插入符号?_Java_Swing_Textarea_Position_Caret - Fatal编程技术网

在java中,如何在文本区域的新添加文本末尾自动显示插入符号?

在java中,如何在文本区域的新添加文本末尾自动显示插入符号?,java,swing,textarea,position,caret,Java,Swing,Textarea,Position,Caret,可能重复: 我有TextArea组件。在不同的情况下,我应该附加文本。我希望插入符号出现在新附加文本的末尾,如果文本太大,则自动向下滚动 textAreaStatus = new WebTextArea( "1- Click on the refresh icon to get newest file.\n" + "2- Select destination if needed.\n" +

可能重复:

我有TextArea组件。在不同的情况下,我应该附加文本。我希望插入符号出现在新附加文本的末尾,如果文本太大,则自动向下滚动

textAreaStatus = new WebTextArea(
            "1- Click on the refresh icon to get newest file.\n" +
                    "2- Select destination if needed.\n" +
                    "3- Click download button to start downloading.\n");
    textAreaStatus.setBackground(Color.black);
    textAreaStatus.setCaretPosition(textAreaStatus.getText().length());
    textAreaStatus.getCaret().setVisible(true);

希望这段代码能对您有所帮助。你必须这么做

int len = textArea.getDocument().getLength();
textArea.setCaretPosition(len);
用于包装文本,使其向下滚动,因为长度超过实际视图使用的长度

textArea.setLineWrap(true);
下面是一个示例程序供您理解

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class CarotPosition extends JFrame
{
    private JPanel panel;
    private JTextArea textArea;
    private JScrollPane scrollPane;
    private JButton button;

    public CarotPosition()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        panel = new JPanel();
        panel.setLayout(new BorderLayout());

        textArea = new JTextArea();
        scrollPane = new JScrollPane(textArea);
        textArea.setLineWrap(true);

        button = new JButton("Click to add Text");
        button.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent ae)
                {
                    textArea.append("Some NEW TEXT is here...");
                    int len = textArea.getDocument().getLength();
                    textArea.setCaretPosition(len);
                    textArea.requestFocusInWindow();
                }
            });

        setContentPane(panel);
        panel.add(scrollPane, BorderLayout.CENTER);
        panel.add(button, BorderLayout.PAGE_END);

        pack();
        setVisible(true);   
    }

    public static void main(String... args)
    {
        javax.swing.SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    new CarotPosition();
                }
            });
    }
}
希望这对你有所帮助


希望这段代码能对您有所帮助。你必须这么做

int len = textArea.getDocument().getLength();
textArea.setCaretPosition(len);
用于包装文本,使其向下滚动,因为长度超过实际视图使用的长度

textArea.setLineWrap(true);
下面是一个示例程序供您理解

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class CarotPosition extends JFrame
{
    private JPanel panel;
    private JTextArea textArea;
    private JScrollPane scrollPane;
    private JButton button;

    public CarotPosition()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        panel = new JPanel();
        panel.setLayout(new BorderLayout());

        textArea = new JTextArea();
        scrollPane = new JScrollPane(textArea);
        textArea.setLineWrap(true);

        button = new JButton("Click to add Text");
        button.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent ae)
                {
                    textArea.append("Some NEW TEXT is here...");
                    int len = textArea.getDocument().getLength();
                    textArea.setCaretPosition(len);
                    textArea.requestFocusInWindow();
                }
            });

        setContentPane(panel);
        panel.add(scrollPane, BorderLayout.CENTER);
        panel.add(button, BorderLayout.PAGE_END);

        pack();
        setVisible(true);   
    }

    public static void main(String... args)
    {
        javax.swing.SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    new CarotPosition();
                }
            });
    }
}
希望这对你有所帮助


关于

那么问题是什么?执行代码时会发生什么情况?请坚持阅读第一篇文章,并阅读其中给出的链接文章-然后准确描述您不了解的内容…在
JScrollPane
容器中添加
textAreaStatus
组件,并将后者设置为
setAutoscrolls(true)
@eeno,这是完全错误的:autoscrolls与插入符号的移动无关,尤其是在滚动窗格上设置它时…@kleopatra是的,我同意,但我指的是“…自动向下滚动”哪个autoscrolls方法可以对其包含的组件执行此操作。那么问题是什么?执行代码时会发生什么情况?请坚持阅读第一篇文章,并阅读其中给出的链接文章-然后准确描述您不了解的内容…在
JScrollPane
容器中添加
textAreaStatus
组件,并将后者设置为
setAutoscrolls(true)
@eeno,这是完全错误的:autoscrolls与插入符号的移动无关,尤其是在滚动窗格上设置它时…@kleopatra是的,我同意,但我指的是“…自动向下滚动”哪个autoscrolls方法可以在它包含的组件上执行此操作。不必添加
textArea.requestFocusInWindow()
如果唯一的一点是向用户显示文本区域的底部。@DSlomer64:所指的那一行,仅仅是将焦点放在相应的
JTextField
,因为在编写此代码段时,我可能使用了额外的
JTextField
,所以为了保持焦点在这一行,我可能使用了它。它与向下移动光标无关。如果唯一的目的是向用户显示文本区域的底部,则无需添加
textArea.requestFocusInWindow()
。@DSlomer64:指向的行仅是将焦点保持在相应的
JTextField
,因为在编写此代码段时,我可能会使用附加的
JTextField
,所以为了关注这一点,我可能会使用它。它与向下移动光标无关