gpt4 book ai didi

java - 我可以使用按键组合在 JScrollPane 内的 JTextArea 中向上或向下滚动吗?

转载 作者:行者123 更新时间:2023-12-02 04:26:57 25 4
gpt4 key购买 nike

如果文本区域具有焦点,当然 PgUpPgDn 键可以正常工作,但我希望使用键绑定(bind)向上或向下滚动它,留下焦点所在的位置,而不是将其移动到文本区域并返回。

因此,我将 VK_PAGEDOWN 和 CTRL_DOWN_MASK 映射到菜单项,希望当用户按下 Ctrl+PgDn 时,程序会将文本区域滚动 20 行。

但是同时txaOutput.getLineCount()返回文本区域中的行数,我找不到将插入符 设置为该数字减 20 的方法。txaOutput.setCaretPosition(int i)将插入符号设置为字节号 i .

我所做的是假的,但它确实滚动(Page Up 是相同的,除了 - scrollBytes ):

    PageDown = new KeyBoundMenuItem("PAGEDOWN", VK_PAGE_DOWN, CTRL_DOWN_MASK) 
{
@Override
public void action(ActionEvent e) {
scrollBytes = 20 * totalBytesInTextArea / txaOutput.getLineCount();
try{
txaOutput.setCaretPosition(txaOutput.getCaretPosition() + scrollBytes);
}catch(Exception ex){}
}
};

有没有办法将插入符号设置为 JTextArea 中的特定行号在 JScrollPane

编辑

文本区域包含每行 3 到 11 个字母的单个单词。

编辑2

这就是为什么它是 action而不是actionPerformed :

import java.awt.event.ActionEvent;
import javax.swing.*;
import static javax.swing.KeyStroke.getKeyStroke;

public abstract class KeyBoundMenuItem extends JMenuItem{

public abstract void action(ActionEvent e);


public KeyBoundMenuItem(String actionMapKey, int key, int mask)
{
Action myAction = new AbstractAction()
{
@Override public void actionPerformed(ActionEvent e)
{
action(e);
}
};

setAction(myAction);

getInputMap(WHEN_IN_FOCUSED_WINDOW)
.put(getKeyStroke(key, mask),actionMapKey);
getActionMap().put( actionMapKey, myAction);

}
}

编辑 3

可以用这个代替 KeyBoundMenuItem :

  public static void shortcut(JMenuItem item, int mnem, int mods, int key)
{
item.setMnemonic(mnem);
item.setAccelerator(getKeyStroke(key,mods));
}

但是已经为类似类 KeyBoundButton 准备了代码。很容易在一天的晚些时候进行更改。

编辑 4

以下是需要向上或向下滚动的文本类型:

enter image description here

最佳答案

Is there a way to set the caret to a particular line number

查看 Text Utilities类(class)。方法如下:

  1. getLineAtCaret()
  2. gotoStartOfLine(...)

应该允许你做你想做的事。也就是说向下滚动你可以这样做:

int currentLine = RXTextUtilities.getLineAtCaret(textArea);
RXTextUtilities.gotoStartOfLine(textArea, currentLine + 10);

关于java - 我可以使用按键组合在 JScrollPane 内的 JTextArea 中向上或向下滚动吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030197/

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