我的JTextArea
存在问题。当我写作时,它会向下移动,我不知道如何限制它,所以JFrame
照片:
答案 0 :(得分:1)
您需要将JTextArea
个实例放在JScrollPane
中。这将使文本区域的内容可滚动。
答案 1 :(得分:1)
经过大量研究,我找到了解决方案!我发现根据程序的设计,可以滚动JTextArea是。 This link是帮助我使JTextPane工作的原因,也是我将用作参考的东西。这不是唯一的方法,但如果您有任何疑问,请不要犹豫!感谢。
正如其他人所说,你需要将你的JTextArea包装在JScrollPane
中public class ScrollableJTextArea
{
JTextArea jTextArea = new JTextArea();
// Wrap JTextArea in a JScrollPane
JScrollPane jScrollPane = new JScrollPane(jTextArea);
...
为GUI定义构造函数
ScrollableJTextArea()
{
jTextArea.setLineWrap(true); // wrap text horizontally
jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane.setPreferredSize(new Dimension(380,350));
// and so on...
}
你的主要方法
public static void main(String[] args)
{
ScrollableJTextArea sjta = new ScrollableJTextArea();
JFrame frame = new JFrame();
JPanel center = new JPanel();
// I've read on many forums as well as heard from many fellow classmates
// that it's better to add content to a panel rather than the frame itself
frame.add(center, BorderLayout.CENTER);
center.add(sjta.jScrollPane);
frame.setSize(400, 400);
frame.setVisible(true);
}
答案 2 :(得分:0)
getRows()
大于getLineCount()
时,比较getLineCount()
和getRows()
,然后使用getText()
和{{1 }}
答案 3 :(得分:0)
您可以JScrollPane
这样做。
private JTextArea textArea = new JTextArea(12, 30);
JScrollPane scrollPane = new JScrollPane(textArea); // create ScrollPane and add textArea in it
setPreferredSize(new Dimension(450, 110));
add(scrollPane, BorderLayout.CENTER); // or whatever layout you are using
但是你想要这样做是没有意义的。但是,如果您不想使用JScrollPane
,可以使用以下代码强制JTextArea
转到JTextArea
的末尾。
textArea.setCaretPosition(textArea.getDocument().getLength());
希望这有帮助。