停止接收新换行符的JTextPane

时间:2015-12-31 11:34:08

标签: java swing jtextpane

当用户按 Enter 而不只是更改该行时,我希望我的JTextPane具有某些功能。现在我了解了如何实现我想要的功能,但我仍然无法通过按 Enter 来否定换行。我已经尝试了以下但它似乎不起作用,无论如何都会创建新行。

为了更好地了解我在这里要实现的目标,textpane应该包含一个特定的文件路径,所以我希望用户能够只在水平方向上滚动而不是在顶部添加新行。 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()));
            }
        }
    });

2 个答案:

答案 0 :(得分:3)

KeyListener永远不适合文本组件。相反,您应该使用DocumentFilter过滤掉您不希望添加到基础Document的内容。

有关详细信息,请参阅Implementing a Document FilterDocumentFilter Examples

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

有关详细信息,请参阅this example

答案 1 :(得分:2)

  

textpane应该包含某个文件路径,所以我希望用户能够只按水平滚动而不是垂直添加新行。 JTextPane组件是否适合此用途?

我建议有更好的选择。

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

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