当用户按 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()));
}
}
});
答案 0 :(得分:3)
KeyListener
永远不适合文本组件。相反,您应该使用DocumentFilter
过滤掉您不希望添加到基础Document
的内容。
有关详细信息,请参阅Implementing a Document Filter和DocumentFilter Examples
您还可以更改insert-break
键绑定,更改行为或采取其他操作。
有关详细信息,请参阅this example
答案 1 :(得分:2)
textpane应该包含某个文件路径,所以我希望用户能够只按水平滚动而不是垂直添加新行。 JTextPane组件是否适合此用途?
我建议有更好的选择。
如果您只有一行文字,那么只需使用JTextField
即可。要处理Enter键,您可以在文本字段中添加ActionListener
。
如果您确实需要多行,那么我建议您使用JList
。