添加滚动到文本区域

     2023-02-26     85

关键词:

【中文标题】添加滚动到文本区域【英文标题】:Add scroll into text area 【发布时间】:2012-04-27 23:07:21 【问题描述】:

如何将滚动条添加到我的文本区域。我已尝试使用此代码,但它不起作用。

middlePanel=new JPanel();
middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));

// create the middle panel components
display = new JTextArea(16, 58);
display.setEditable(false); // set textArea non-editable
scroll = new JScrollPane(display);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

//Add Textarea in to middle panel
middlePanel.add(scroll);
middlePanel.add(display);

【问题讨论】:

那么当文本达到区域限制时会发生什么? 【参考方案1】:

在此处将 JTextArea 添加到 JScrollPane 后:

scroll = new JScrollPane(display);

你不需要像你一样再次将它添加到其他容器中:

middlePanel.add(display);

只需删除最后一行代码,它就可以正常工作。像这样:

    middlePanel=new JPanel();
    middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));

    // create the middle panel components

    display = new JTextArea(16, 58);
    display.setEditable(false); // set textArea non-editable
    scroll = new JScrollPane(display);
    scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

    //Add Textarea in to middle panel
    middlePanel.add(scroll);

JScrollPane 只是另一个容器,它可以在需要时在组件周围放置滚动条,并且还具有自己的布局。当您想将任何内容包装到滚动中时,您只需将其传递给 JScrollPane 构造函数即可:

new JScrollPane( myComponent ) 

或像这样设置视图:

JScrollPane pane = new JScrollPane ();
pane.getViewport ().setView ( myComponent );

补充:

这是一个完整的例子,因为你仍然没有让它工作:

public static void main ( String[] args )

    JPanel middlePanel = new JPanel ();
    middlePanel.setBorder ( new TitledBorder ( new EtchedBorder (), "Display Area" ) );

    // create the middle panel components

    JTextArea display = new JTextArea ( 16, 58 );
    display.setEditable ( false ); // set textArea non-editable
    JScrollPane scroll = new JScrollPane ( display );
    scroll.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );

    //Add Textarea in to middle panel
    middlePanel.add ( scroll );

    // My code
    JFrame frame = new JFrame ();
    frame.add ( middlePanel );
    frame.pack ();
    frame.setLocationRelativeTo ( null );
    frame.setVisible ( true );

这就是你得到的:

【讨论】:

添加了您应该使用的代码。也许您也想在其他地方添加它?如果这样做,JTextArea 将从滚动窗格中移出并放在新位置。 我没有在其他任何地方使用。 它应该可以工作。似乎您有一些额外的代码会影响容器或滚动窗格。检查编辑的答案 - 有一个完整的工作示例。或者这不是你想要的? 是的,它现在可以工作了。我在面板中添加了 textarea 而不是 middlePanel.add(scroll) 但我只是替换它并开始工作谢谢:) 正如@LihO 在他的回答中指出的那样,setBoundsscroll 对象的调用也是它对我有用的原因。【参考方案2】:

我幼稚的假设是滚动窗格的大小将自动确定...

真正对我有用的唯一解决方案是明确地查看 JScrollPane 的边界

import javax.swing.*;

public class MyFrame extends JFrame 

    public MyFrame()
    
        setBounds(100, 100, 491, 310);
        getContentPane().setLayout(null);

        JTextArea textField = new JTextArea();
        textField.setEditable(false);

        String str = "";
        for (int i = 0; i < 50; ++i)
            str += "Some text\n";
        textField.setText(str);

        JScrollPane scroll = new JScrollPane(textField);
        scroll.setBounds(10, 11, 455, 249);                     // <-- THIS

        getContentPane().add(scroll);
        setLocationRelativeTo ( null );
    

也许它会帮助一些未来的访客:)

【讨论】:

只是一个小提示 - 滚动窗格大小和位置将自动确定,但前提是您为要添加它的容器提供任何布局。现在,在您的示例中,您为内容窗格设置了 null 布局:getContentPane().setLayout(null); - 这就是您需要手动指定边界的原因。否则,如果您设置任何布局 - 例如new BorderLayout() - 它会自动计算并设置滚动窗格的边界。【参考方案3】:

尝试将这两行添加到您的代码中。我希望它会奏效。它对我有用:)

display.setLineWrap(true);
display.setWrapStyleWord(true);

输出图片如下所示

【讨论】:

【参考方案4】:

使用java swing实现滚动条最简单的方法如下:

    导航到设计视图 右键点击textArea 使用 JScrollPane 选择环绕

【讨论】:

如何始终滚动到文本区域的底部?

】如何始终滚动到文本区域的底部?【英文标题】:Howtoalwaysscrolltobottomoftextarea?【发布时间】:2013-03-1510:26:12【问题描述】:如何使滚动窗格始终位于正在写入新数据的滚动窗格的底部?我看不到新文本的写入。JTextAreaitTextArea=n... 查看详情

你如何滚动到文本区域中光标的位置?

】你如何滚动到文本区域中光标的位置?【英文标题】:Howdoyouscrolltothepositionofthecursorinatextarea?【发布时间】:2015-07-0602:52:44【问题描述】:JSFiddleDemoHTML<textarearows=\'5\'>sdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfask 查看详情

使用 jQuery,我如何强制访问者滚动到文本区域的底部以启用提交按钮?

】使用jQuery,我如何强制访问者滚动到文本区域的底部以启用提交按钮?【英文标题】:UsingjQuery,howdoIforceavisitortoscrolltothebottomofatextareatoenablethesubmitbutton?【发布时间】:2011-08-2414:09:52【问题描述】:我有一个包含只读文本区域... 查看详情

如何在 IE 中将大小调整器添加到文本区域?

】如何在IE中将大小调整器添加到文本区域?【英文标题】:HowtoaddresizertotextareainIE?【发布时间】:2012-08-0205:41:45【问题描述】:如何像在Chrome和Firefox中一样在IE中为textarea添加调整大小?jQuery.resizable()对我不起作用。【问题讨... 查看详情

如何在 ActionScript 3 中将自定义上下文菜单添加到文本区域控件?

】如何在ActionScript3中将自定义上下文菜单添加到文本区域控件?【英文标题】:HowtoaddCustomContextMenutoTextAreaControlinActionScript3?【发布时间】:2017-03-3121:45:43【问题描述】:我正在使用以下代码来声明一个文本区域:<s:TextAreaid="t... 查看详情

单击提交按钮时将自定义文本从选择框提交到文本区域

...后,我希望它根据在选择框中选择的下拉菜单向文本区域添加自定义文本。我在newthread模板的头部有这个脚本,但在提交时它仍然无法工作。我是不是做错了什 查看详情

使用 JavaScript 将 ajax 的结果附加到文本区域

】使用JavaScript将ajax的结果附加到文本区域【英文标题】:AppendingaresultfromajaxintoatextareausingJavaScript【发布时间】:2017-11-1600:01:25【问题描述】:如何将ajax的结果附加到文本区域?我正在使用代码点火器。我想将控制器中的值附... 查看详情

检测某个单词刚刚输入到文本区域

】检测某个单词刚刚输入到文本区域【英文标题】:DetectOnceaCertainWordHasJustBeenEnteredinaTextarea【发布时间】:2012-01-0215:28:54【问题描述】:考虑到EditArea和CodeMirror的自动完成等功能,我想知道是否像Dreamweaver一样,有一种方法可以... 查看详情

如何将此内容输出到文本区域?

】如何将此内容输出到文本区域?【英文标题】:Howcanioutputthiscontenttoatextarea?【发布时间】:2015-04-2521:58:46【问题描述】:我试图将文本从php页面传递到我的html页面,正如ChrisBakers的回答(javascript,不是jquery)所描述的那样。Ca... 查看详情

将文本浮动到文本区域的右侧[关闭]

】将文本浮动到文本区域的右侧[关闭]【英文标题】:Floatingtexttotherightinsideoftextarea[closed]【发布时间】:2013-05-1419:29:58【问题描述】:我知道这似乎是一个愚蠢的问题,但直到现在我才不得不这样做。有没有办法在表单文本区域... 查看详情

如何将cmd中的命令输出到文本区域

】如何将cmd中的命令输出到文本区域【英文标题】:howtogetoutputofacommandincmdintoatextarea【发布时间】:2016-07-1214:24:45【问题描述】:我正在使用Java并使用Scanner类。我将一个SQL查询作为输入并将其存储到Strings。Scannersc=newScanner(System... 查看详情

如何将两个文本添加到一个文本区域?

】如何将两个文本添加到一个文本区域?【英文标题】:HowdoIaddtwotextsintoonetextarea?【发布时间】:2013-05-2302:08:00【问题描述】:我想插入两个文本到一个文本区域使用javascript。P>我得到明文***,但我似乎无法给两个或两个以上... 查看详情

将光标设置到文本区域中特定行上的特定位置

】将光标设置到文本区域中特定行上的特定位置【英文标题】:Setcursortospecificpositiononspecificlineinatextarea【发布时间】:2013-07-2508:31:35【问题描述】:我试图在某种程度上复制MicrosoftOffice的Outlook等程序中的“自动更正”功能。对... 查看详情

向 html 文本区域添加换行符

】向html文本区域添加换行符【英文标题】:Addalinebreaktoahtmltextarea【发布时间】:2014-03-3105:55:32【问题描述】:我试图在运行时将换行符添加到文本区域(\\n),但不是显示为换行符,而是将文本区域物理放入\\n。我已经阅读了有... 查看详情

当 UpdatePanel 触发时,IE8 光标跳到文本区域的末尾

】当UpdatePanel触发时,IE8光标跳到文本区域的末尾【英文标题】:IE8cursorjumpstotheendofatextareawhenanUpdatePanelfires【发布时间】:2011-08-1701:47:04【问题描述】:我在这样的页面上有一个UpdatePanel和一个文本区域:<asp:Timerrunat="server"ID="... 查看详情

将文本附加到文本区域,但将插入符号位置设置为行尾

】将文本附加到文本区域,但将插入符号位置设置为行尾【英文标题】:Appendtexttotextareabutsetcaretpositiontoendofline【发布时间】:2020-01-1806:27:04【问题描述】:嗨!我目前正在尝试使用JavaFX构建终端仿真器,我想在按下“enter”后... 查看详情

如何从输入字段搜索文本到文本区域,以及如何使用 Jquery 标记匹配结果?

】如何从输入字段搜索文本到文本区域,以及如何使用Jquery标记匹配结果?【英文标题】:HowtoSearchtextfrominputfieldtotextarea,andHowtomarkedmatchedresultUsingJquery?【发布时间】:2021-01-1302:22:59【问题描述】:我正在尝试创建简单的jquery应... 查看详情

在 IE 文本区域中不起作用

...】:2013-01-1600:00:37【问题描述】:我正在使用这个jquery来添加页面的一些元素并将它们添加到文本区域$(\'#chk_editor\').append($(\'#greeting\').text()).append(\'\\n\\nIwantittobeknownthat\').show();Interne 查看详情