首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTextArea不接受换行符键盘输入

问JTextArea不接受换行符键盘输入
EN

Stack Overflow用户
提问于 2018-03-05 16:04:37
回答 2查看 328关注 0票数 0

短版本:我在Java1.8应用程序中有一个JTextArea小部件,它不接受alt+0010 (换行符)或CTRL+J (也是换行符)作为输入。不过,键盘上的返回键增加了换行符。我需要它接受ASCII 10从键盘,并把它当作换行符。使用字符串调用setText()方法(如"This is my newline\ntest case." )完全符合我的预期,并在\n出现的地方放置了一个换行符。

长版本:我正在通过USB扫描仪读取一个PDF417 2D条形码,该扫描器发送带有换行符(0x10)字符格式的文本。如果我使用扫描仪读取条形码与记事本,接受输入,换行符正确呈现。我可以让其他系统验证换行符是否通过输入,但JTextArea只是忽略它。

演示它(不上传整个框架项目)的最简单方法是将JTextArea添加到应用程序中,运行它,然后点击文本区域内的ctrl+J尝试添加换行符。然后遍历JTextArea的内容:

代码语言:javascript
复制
private void jButton2MouseClicked(java.awt.event.MouseEvent evt) { 
    //jtxtData is a JTextArea object
    String data = jtxtData.getText(); 
    for(int i = 0; i < data.length(); i++) { 
        System.out.println(data.charAt(i) + ": " + (int)data.charAt(i));
    }

ASCII 10将不会显示任何内容。

知道如何让JTextArea (或任何其他Swing小部件)接受键盘上的0x10作为有效输入吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-05 16:19:35

所以"\n“等于10。

代码语言:javascript
复制
    char c = 10;
    String ten = "" + c;
    System.out.println(ten.equals("\n"));
    //true

首先,既然enter工作,您可以使用enter,然后更新文本,使其具有正确的字符。

代码语言:javascript
复制
String text = textArea.getText().replace("\r\n", "\n");

您可以为alt键组合添加一个键侦听器,或者为ctrl键组合键添加一个键侦听器。

代码语言:javascript
复制
KeyStroke ctrlj = KeyStroke.getKeyStroke('j', InputEvent.CTRL_DOWN_MASK);
Action insertEnter = new AbstractAction() {
    public void actionPerformed(ActionEvent e) {
        textArea.append('\n');
    }
};

textArea.getInputMap().put(ctrlj, "insert enter");
textArea.getActionMap().put("insert enter", insertEnter);

这有点麻烦,但是这会让ctrl+j插入到您的文本区域。

票数 0
EN

Stack Overflow用户

发布于 2018-03-05 17:00:32

点击文本区域内的ctrl+J,尝试添加换行符

CTRL+J对Swing来说没有什么特别之处。不知道为什么你认为它应该增加一个换行符。Enter键用于在Swing中添加换行符。

Swing使用Key Bindings将Actions添加到KeyStrokes中。在Swing中,Enter键映射到一个操作,以向文档中添加一个换行符。查看键绑定以获得默认绑定列表。

如果需要,可以添加Ctrl+J作为另一个KeyStroke来添加换行符。该链接显示了如何通过以下两种方法添加另一个绑定:

  1. 与不同的KeyStroke共享操作
  2. 将操作名称绑定到KeyStroke

尽管我仍然不明白这将如何帮助您解决问题,因为您说数据来自USB读取器,并在传递到文本区域之前进行格式化。这就是为什么我们需要适当的代码来演示这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49114621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档