如何使用触控板在 Java AWT ScrollPane 中进行水平鼠标滚轮滚动

2024-02-17

与许多现代鼠标和触控板一样,我的笔记本电脑支持垂直和水平滚动。一旦你习惯了,它就会让人上瘾。我只是希望我的 Java 应用程序支持通过触控板/鼠标滚轮进行水平滚动,但在我搜索的所有地方似乎这在 Java 中是不可能的。

我真的希望有人告诉我我做错了,这个功能已经是请求的行为:https://bugs.java.com/bugdatabase/view_bug?bug_id=6440198 https://bugs.java.com/bugdatabase/view_bug?bug_id=6440198

对于我正在开发的应用程序来说,无法完成这个简单的事情实际上是一个问题。事实上,对于我能想到的任何应用程序!我在 Java 后端投入了一些时间,所以我真的很想为这个看似简单的事情找到一个解决方案。

问题是我可以做什么来实现这种行为?原始操作系统级事件是否通过 java 暴露给我,那么我需要从头开始编写它吗?

import java.awt.*;

public class ScrollExample extends Canvas {

    public void paint(Graphics g) {

        g.setColor(Color.green);
        g.fillOval(0,0,400, 400);

    }

    public static void main(String[] args) {

        ScrollExample b = new ScrollExample();
        Frame f = new Frame ("Scroll Example");

        ScrollPane scroller = new ScrollPane (ScrollPane.SCROLLBARS_ALWAYS);
        scroller.add(b,"Center");
        f.setPreferredSize(new Dimension(500,500));
        f.add ("Center",scroller);
        f.pack();
        f.show();

    }

}

Swing 示例适用于水平和垂直滚动

import java.awt.*;
import javax.swing.*;

public class ScrollExample extends JPanel { 

    public void paint(Graphics g) {

        super.paint(g);

        g.setColor(Color.green);
        g.fillOval(0,0,400, 400);

    }

    public static void main(String[] args) {

        JFrame f = new JFrame ("Scroll Example");
        ScrollExample p = new ScrollExample();
        p.setPreferredSize(new Dimension(1000, 1000));
        
        JScrollPane scroller = new JScrollPane(p,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scroller.getHorizontalScrollBar().setUnitIncrement(10);
        scroller.getVerticalScrollBar().setUnitIncrement(10);

        f.setPreferredSize(new Dimension(500,500));
        f.add (scroller,BorderLayout.CENTER);
        f.pack();
        f.show();
    }
}

Swing 默认支持此功能,但当两个滚动条都可见时,垂直滚动优先于水平滚动。

我希望新的开发能够在 Swing 中完成,而不是在 AWT 中完成。

Edit:

您应该能够使用鼠标滚轮控制器 http://tips4java.wordpress.com/2010/01/10/mouse-wheel-controller/自定义滚动速度。我从未尝试过水平滚动,请告诉我它是否有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用触控板在 Java AWT ScrollPane 中进行水平鼠标滚轮滚动 的相关文章

  • Java 中等效的并行扩展

    我在 Net 开发中使用并行扩展有一些经验 但我正在考虑在 Java 中做一些工作 这些工作将受益于易于使用的并行库 JVM 是否提供任何与并行扩展类似的工具 您应该熟悉java util concurrent http java sun
  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 当延迟加载模块被销毁时采取行动

    我有一个 Angular 6 应用程序 我懒惰地加载模块并通过路由器传递一些数据 进入模块后 我调用共享服务中的一个方法 并将这些数据 配置内容 传递给该方法 当该模块被销毁时 本质上是当用户离开该路径时 我需要调用一个方法 但我只想调用它
  • __ptr32 和 __ptr64 有什么意义?

    如中所述这篇 MSDN 文章 http msdn microsoft com en us library aa985900 28v vs 80 29 aspx 微软有这两种类型注释来声明不同架构上的本机指针 然而 在第二行 在 32 位系统
  • 返回这个|| (0,eval)('这个');

    查看 doT js 源代码 https raw github com olado doT master doT js https raw github com olado doT master doT js 这是做什么的 function
  • json数组:如何创建新的数组元素?

    我的目标是得到一个像这样的 json 数组 var args name test value 1 key test2 value 2 我怎样才能得到下面的代码来构建像上面一样的数组 this dependentProperties arra
  • “read/1”调用后 SWI Prolog 回溯行为

    我在看另一个序言 https stackoverflow com questions 47317413 how to use user input in prolog to search在StackOverflow上提问并遇到这种情况 假设
  • 音隙不起作用

    我已经从其网站下载了phonegap示例 但它没有运行 我找不到原因 请帮助我获得解决方案 当我运行时它显示 无法加载位于 file andriod asset www index html 的网页 找不到所请求的文件 www index
  • 如何将SIRI集成到iPhone应用程序中? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个 iPad 应用程序
  • 如何在 jQuery Ajax 成功回调中处理我的 JSON 数据?

    如果我有一个ajax调用 ajax url url dataType json data data success function json data What s the efficient way to extract the JSO
  • Babel:ES6 中的函数参数类型

    如果我编写以下代码并将其转译为通天塔 6 5 0 它工作正常 function foo first string second number code here string and number刚刚从转译的 ES5 代码中删除 如果我使用
  • C#、F#、IronPython 和 IronRuby 的集成

    有人告诉我 由 C 和 F 源代码生成的程序集文件是可以互操作的 因为它们被编译成 NET 程序集 Q1 这是否意味着 C 可以像调用 C 函数一样调用 F 函数 Q2 IronPython 和 IronRuby 怎么样 我没有看到来自 I
  • 一个或多个数组的加权洗牌?

    使用嵌套数组中的权重对一个或多个数组进行混洗的好算法是什么 Example array array array name gt John rank gt 3 array name gt Bob rank gt 1 array name gt
  • 判断 __getattr__ 是方法还是属性调用

    有什么方法可以使用 getattr 确定方法和属性调用之间的区别吗 I e in class Bar object def getattr self name if THIS IS A METHOD CALL Handle method c
  • 如何在 Google AppEngine 平台上访问 Fauxton?

    我正在 Google App Engine 上创建一个离线优先的应用程序 其中 PouchDB 作为我的本地数据库 CouchDB 作为我的远程数据库 我已在 Google AppEngine 上启用了 CouchDB 并尝试访问以下 UR
  • 今天小部件在应用程序更新后没有响应

    我今天的小部件有一个奇怪的案例 我的应用程序有一个小部件来向用户显示一些信息 小部件上有一些按钮 用户可以点击按钮来获取不同的信息 奇怪的是 我正在开发我的应用程序的新版本 我需要测试一下 当我在旧版本上安装新的临时版本应用程序时 我的小部
  • Python f.write() 不接受更多参数

    我有这样的Python代码 f open nv csv a a 10 3 b 3 12 c 3 13 f write a b c 这将输出返回为 f write a b c TypeError function takes exactly
  • 如何在 PHP 中将字符串转换为数字?

    我想转换这些类型的值 3 2 34 0 234343 等到一个数字 在 JavaScript 中我们可以使用Number 但是PHP中有类似的方法吗 Input Output 2 2 2 34 2 34 0 3454545 0 345454
  • 如何使用React Router将数据从一个页面传递到另一个页面

    请我需要有关react router dom的帮助 我是这个库的新手 似乎可以找到任何解决方案 我从 api 调用中得到三个结果 其中我映射数据以将其呈现在 UI 上 现在我需要的是 如果我单击此列表之一上的一行 我希望它带我到屏幕仅显示我
  • Calendar.WEEK_OF_MONTH 在两个不同的设备上给出不同的结果

    我有两台设备 HTC Android 2 3 5 和 Samsung Android 2 3 6 现在我面临的问题是 我需要日期是一个月中的第几周 所以我编写了这段代码并安装在两部手机上 并将系统日期设置为 2013年1月27日 Calen
  • 无法使用runtime.exec重新启动设备

    由于某种原因 我无法使用 Runtime getRuntime exec system bin reboot 重新启动 Android 设备 我已经在 3 台设备上尝试了以下代码 但没有成功 一个是从 rowboat android 源代码
  • 如何使用触控板在 Java AWT ScrollPane 中进行水平鼠标滚轮滚动

    与许多现代鼠标和触控板一样 我的笔记本电脑支持垂直和水平滚动 一旦你习惯了 它就会让人上瘾 我只是希望我的 Java 应用程序支持通过触控板 鼠标滚轮进行水平滚动 但在我搜索的所有地方似乎这在 Java 中是不可能的 我真的希望有人告诉我我