当前位置: 首页 > 知识库问答 >
问题:

输入键在JTextArea中不起作用

敖永丰
2023-03-14

我正在开发一个Java Swing应用程序。我在JScrollPane内部的JTabbedPane内部的JPanel。我可以键入jtextarea,键盘上的每个键都能达到预期的效果,除了enter键。

选项卡和空格工作正常。当我按enter键,然后在启用换行的情况下键入到行尾时,我键入enter键的地方断行,这使我相信问题出在JTextarea显示文本的方式上。我为JTextarea提供了一个新的HTMLDocument。注意,当我没有给JTextarea一个新的HTMLDocument时,enter键工作得非常好。

import javax.swing.*;
import javax.swing.text.html.HTMLDocument;
import java.awt.*;

public class Driver extends JFrame {
    public Driver() {
        setLayout( new GridLayout( 1, 1 ) );

        JTabbedPane tabbedPane = new JTabbedPane();
        add( tabbedPane );

        JTextArea textArea = new JTextArea( new HTMLDocument() );
        textArea.setLineWrap( true );

        JScrollPane scrollPane = new JScrollPane( textArea );
        tabbedPane.addTab( "No enter key!", scrollPane );

        pack();
        getContentPane().setVisible( true );
        setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
        setSize( 640, 480 );
        setVisible( true );
        setFocusable( true );
    }

    public static void main( String[] args ) {
        new Driver();
    }
}

共有1个答案

轩辕涵亮
2023-03-14

Jtextarea不理解HtmlDocument-它不适合样式化文档。您必须将JTextPaneHTMLEDITORKIT一起使用,以便它知道它是HTML。出于某种原因,您不能提供自己的文档,但如果从组件中获得文档,它可以正常工作。

    final HTMLEditorKit htmlKit = new HTMLEditorKit();
    final JTextPane textPane = new JTextPane( );
    textPane.setEditorKit(htmlKit);
    textPane.setEditable(true);
    JScrollPane scrollPane = new JScrollPane( textPane );

    Document doc = textPane.getDocument();
    System.out.println(doc.getClass().getName()); // It's an HTML Document
 类似资料:
  • 我刚接触spring,我使用《spring in action 5》一书对其进行了探索。我对我的网站做了类似的操作,我已经为页面编写了2个控制器和2个html文件。第一页是比萨饼制作表单。第二个是订单提交。我的控制器代码实际上与书中的相同。在我开始验证表单输入之前,一切都很顺利。我做了比萨饼、订购课程和控制器所需的一切。 订单类: 比萨饼类: 披萨制作控制器: 表单提交控制器: 问题在于验证比萨饼

  • 我正在编写一个LWJGL应用程序,我在让键盘和鼠标类工作方面遇到了一些困难。永远不会调用MouseWheelMove、keyPressed和KeyRelease方法。我可以确认调用了Listener.Update方法。 在这个应用程序中,我将显示嵌入到一个JFrame中,但是即使我不这样做,它仍然不能工作,所以这似乎不是问题所在。 控制台输出: 呈现器初始化: 侦听器类:

  • 问题内容: 我想将表单的一部分看起来像电子表格。有几种形式,因此是不可行的(尽管您确实在打印语义上的表格数据,但我并不反对这种情况)。 因此,我尝试直接将CSS2.1布局直接与表单输入元素一起使用,例如。 但是它看起来 对元素不起作用! 如果您签入Chrome的“计算机样式”,则显示内容为“内联元素”。 任何的想法? 这听起来比在周围放一些更好,然后不得不玩盒子模型来使它看起来更好… 问题答案:

  • 问题内容: 由于某些原因,我的代码将不接受最后一行“您想订购的商品:”的输入 谁能告诉我我的错误在这里吗?它正在正确地编译一切。我只是一个初学者,所以请简单地告诉我。 问题答案: 您需要在调用行的后面立即调用 ,原因是仅要求下一个整数不会占用输入中的整个行,因此您需要通过调用来跳至输入中的下一个新行字符 每次您需要在调用不消耗整行的方法后获取新行时,都必须执行此操作。考虑改用对象! 如果无法将输入

  • 问题内容: 因此,我是一名新Java程序员,我试图弄清楚为什么一段代码无法正常工作。我遇到的问题是:“字符串兴趣= input.nextLine();”,它跳过了用户的输入并跳至下一个System.out,因此它仅在控制台中显示“您的个人资料…”在允许用户输入任何数据之前。抱歉,这是一个愚蠢的问题,我很新! 问题答案: 这样说: 其余代码可能与您上面的代码相同。 编辑: 它必须是这样的(我的意思是

  • 文件src/main/webapp/WEB-INF/web.xml包含用于引导CDI的servlet侦听器和BeanManager引用: 通过这些设置,在使用mvn Jetty运行应用程序时,我总是遇到以下错误:run(第一行是最重要的): 应用程序正在运行,但正如异常消息所述:CDI注入在servlet中不可用。 在src/main/resources/log4j.properties中,我增加