gpt4 book ai didi

java - JTextArea shift + enter 换行

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:46 25 4
gpt4 key购买 nike

我已经在我的 JTextArea 字段中添加了一个 keylistener,但它的行为并不像我预期的那样。

inputTextArea.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent k) {
//If the return button is hit, only set to a new line if shift is also down.
if(k.getKeyChar() == KeyEvent.VK_ENTER) {
if(k.isShiftDown()) {
inputTextArea.append(" \n");
} else {
//Send The Message...
boolean cleanTextField = false;
try {
sendMessage(inputTextArea.getText());
cleanTextField = true;
msgScrollPane.setAutoscrolls(true);

JScrollBar vbar = msgScrollPane.getVerticalScrollBar();
if ((vbar.getValue() + vbar.getVisibleAmount()) == vbar.getMaximum()) {
msgPane.setCaretPosition(msgDoc.getLength());
}
} catch (Exception ex) {
ex.printStackTrace();
cleanTextField = false;
} finally {
if(cleanTextField) {
inputTextArea.setText("");
}
}
}
}
}
});

我想要这个:- 如果按下返回按钮并且按下 shift:添加一个新行。- 如果返回按钮被按下并且 shift 按钮没有按下:没有换行,但是提交。

现在它的行为是这样的:- 如果我按下返回按钮并向下移动:没有​​添加行。什么都没发生。- 如果我按下返回按钮并且 shift 没有按下:提交,但如果我再次开始输入,它会从新行开始。

有人知道如何做我想做的事吗?

编辑:

我尝试了一些其他代码来检测 shift 按钮是否按下:

                    if((k.getModifiersEx() == KeyEvent.SHIFT_DOWN_MASK) || 
(k.getModifiers() == KeyEvent.SHIFT_DOWN_MASK)) {

这也行不通

最佳答案

您可以使用 JTextAreaInputMapActionMap 将击键映射到操作:

private static final String TEXT_SUBMIT = "text-submit";
private static final String INSERT_BREAK = "insert-break";
...
private void initialize() {
InputMap input = inputTextArea.getInputMap();
KeyStroke enter = KeyStroke.getKeyStroke("ENTER");
KeyStroke shiftEnter = KeyStroke.getKeyStroke("shift ENTER");
input.put(shiftEnter, INSERT_BREAK); // input.get(enter)) = "insert-break"
input.put(enter, TEXT_SUBMIT);

ActionMap actions = inputTextArea.getActionMap();
actions.put(TEXT_SUBMIT, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
submitText();
}
});
}
...
private void submitText() {
// TODO
}

ENTER 的原始操作 - “insert-break” - 用于 shift ENTER

关于java - JTextArea shift + enter 换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2162170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com