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

DSlomer64

如果文本区域具有焦点,则PgUpPgDn当然可以正常工作,但是我希望使用键绑定将其向上或向下滚动,而不是将焦点移至文本区域并向后移动。

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

但是,尽管txaOutput.getLineCount()返回文本区域中的行数,我找不到将插入号设置为该数字减20的方法。txaOutput.setCaretPosition(int i)将插入号设置为BYTE number 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){}
      }
    };

有没有一种方法来设置插入符到特定的行号在JTextAreaJScrollPane

编辑

文本区域包含每行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

这是需要向上或向下滚动的文本:

在此处输入图片说明

卡米克尔

有没有一种方法可以将插入符号设置为特定的行号

签出Text Utilities类。像这样的方法:

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

应该可以让您做自己想做的事。向下滚动即可:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以使用添加到JToolBar的JButton来向上或向下滚动JPanel吗?

来自分类Dev

我可以使用平均功能在Google表格中向上或向下取整吗?

来自分类Dev

我可以使用Java对instagram关注者/以下Windows进行向下滚动操作吗?

来自分类Dev

JScrollPane 不在 JTextArea 中滚动

来自分类Dev

我可以使用Bootstrap组合这样的输入组件吗?

来自分类Dev

我可以使用组合框中的所有项目遍历字典吗?

来自分类Dev

我可以将复杂的鼠标按键组合与xbindkeys一起使用吗?

来自分类Dev

我可以将复杂的鼠标按键组合与xbindkeys一起使用吗?

来自分类Dev

我可以使用特征对象键入自省,然后向下转换吗?

来自分类Dev

我可以使用向下箭头指针关闭Adobe Reader的手的缩放行为吗?

来自分类Dev

我可以使用 R 中的指针交换函数内的变量吗?

来自分类Dev

我可以使用sed的&变量在$()内执行操作吗?

来自分类Dev

我们可以使用jquery向上一级节点吗?

来自分类Dev

OSX Lion:我可以使用“经典”鼠标滚轮滚动但保持“自然”触控板滚动吗?

来自分类Dev

我可以使用LVM将SAS和SATA HDD混合在一起吗?

来自分类Dev

bash中的命令内可以使用条件语句吗?

来自分类Dev

我可以使用BroadcastReceiver中的回调方法吗?

来自分类Dev

我可以使用clojurescript中的任意节点模块吗?

来自分类Dev

我可以使用设备的相机在Unity中拍照吗?

来自分类Dev

我可以使用null代替Kotlin中的isInitialized吗?

来自分类Dev

我可以使用管道吗?在R中,不是%>%

来自分类Dev

我的yml文件中可以使用gem faker吗?

来自分类Dev

我可以使用分号分隔LilyPond中的语句吗?

来自分类Dev

我可以使用CMD在Windows中搜索文件吗?

来自分类Dev

我可以使用BroadcastReceiver中的回调方法吗?

来自分类Dev

我可以使用 JavaScript 在 URL 中添加 /something 吗?

来自分类Dev

我可以在 MySQL 中组合两个更新查询以使其更快吗?

来自分类Dev

我们可以使用和运算符来组合多个jQuery事件吗

来自分类Dev

我可以使滚动条在lubuntu中延伸到屏幕的最边缘吗?

Related 相关文章

  1. 1

    我可以使用添加到JToolBar的JButton来向上或向下滚动JPanel吗?

  2. 2

    我可以使用平均功能在Google表格中向上或向下取整吗?

  3. 3

    我可以使用Java对instagram关注者/以下Windows进行向下滚动操作吗?

  4. 4

    JScrollPane 不在 JTextArea 中滚动

  5. 5

    我可以使用Bootstrap组合这样的输入组件吗?

  6. 6

    我可以使用组合框中的所有项目遍历字典吗?

  7. 7

    我可以将复杂的鼠标按键组合与xbindkeys一起使用吗?

  8. 8

    我可以将复杂的鼠标按键组合与xbindkeys一起使用吗?

  9. 9

    我可以使用特征对象键入自省,然后向下转换吗?

  10. 10

    我可以使用向下箭头指针关闭Adobe Reader的手的缩放行为吗?

  11. 11

    我可以使用 R 中的指针交换函数内的变量吗?

  12. 12

    我可以使用sed的&变量在$()内执行操作吗?

  13. 13

    我们可以使用jquery向上一级节点吗?

  14. 14

    OSX Lion:我可以使用“经典”鼠标滚轮滚动但保持“自然”触控板滚动吗?

  15. 15

    我可以使用LVM将SAS和SATA HDD混合在一起吗?

  16. 16

    bash中的命令内可以使用条件语句吗?

  17. 17

    我可以使用BroadcastReceiver中的回调方法吗?

  18. 18

    我可以使用clojurescript中的任意节点模块吗?

  19. 19

    我可以使用设备的相机在Unity中拍照吗?

  20. 20

    我可以使用null代替Kotlin中的isInitialized吗?

  21. 21

    我可以使用管道吗?在R中,不是%>%

  22. 22

    我的yml文件中可以使用gem faker吗?

  23. 23

    我可以使用分号分隔LilyPond中的语句吗?

  24. 24

    我可以使用CMD在Windows中搜索文件吗?

  25. 25

    我可以使用BroadcastReceiver中的回调方法吗?

  26. 26

    我可以使用 JavaScript 在 URL 中添加 /something 吗?

  27. 27

    我可以在 MySQL 中组合两个更新查询以使其更快吗?

  28. 28

    我们可以使用和运算符来组合多个jQuery事件吗

  29. 29

    我可以使滚动条在lubuntu中延伸到屏幕的最边缘吗?

热门标签

归档