【问题标题】:Stopping a JTextPane from receiving new line feeds停止 JTextPane 接收新的换行符
【发布时间】:2016-04-05 09:27:22
【问题描述】:

我希望我的JTextPane 在用户按下 Enter 时具有一些功能,而不仅仅是换行。现在我明白了如何实现我想要的功能,但我仍然无法通过按 Enter 来否定换行。我尝试了以下方法,但似乎不起作用,无论如何都会创建新行。

为了更好地了解我在这里尝试实现的目标,文本窗格应该包含特定的文件路径,所以我希望用户只能水平滚动而不是垂直添加新行。 JTextPane 组件适合这种用途吗?

locationPane = new JTextPane();
    locationPane.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent arg0) {
            if(arg0.getExtendedKeyCode() == KeyEvent.VK_ENTER){
                locationPane.setText(locationPane.getText().substring(0, locationPane.getText().length()));
            }
        }
    });

【问题讨论】:

    标签: java swing jtextpane


    【解决方案1】:

    文本窗格应该包含某个文件路径,所以我希望用户能够仅水平滚动而不是垂直添加新行。 JTextPane 组件适合这种用途吗?

    我建议有更好的选择。

    如果您只有一行文本,则只需使用JTextField。要处理 Enter 键,您可以在文本字段中添加 ActionListener

    如果您确实需要多行,那么我建议您可以使用JList

    【讨论】:

      【解决方案2】:

      KeyListener 从来都不是文本组件的合适解决方案。相反,您应该使用DocumentFilter 过滤掉您不想添加到底层Document 的内容。

      请参阅Implementing a Document FilterDocumentFilter Examples 了解更多详情

      您还可以更改 insert-break 键绑定、更改行为或采取其他操作。

      更多详情请见this example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多