java - jSlider 转到点击位置 - 仅在 Macintosh 上出现问题

标签 java macos swing look-and-feel jslider

我一直在为我的所有 JSlider 使用上述 MetalSliderUI 解决方案。 Windows 用户对此很满意。我很高兴在 stackoverflow.com 上找到这个解决方案 这里讨论了解决方案: JSlider question: Position after leftclick

现在最近一个 MAC OSX/64 位用户正在尝试使用我的软件,他从 MetalSliderUI 引用中得到空指针异常。

我添加到 JFrame 的构造函数中的代码示例:

// Radio Window Elecraft K3 RFPWR Slider - when click on slider
            // go to the value instead of going up/down one tick.
            jSliderElecraftK3RFPWR.setUI(
                new MetalSliderUI() {
                    protected void scrollDueToClickInTrack(int direction) {
                        int value = jSliderElecraftK3RFPWR.getValue();
                        if (jSliderElecraftK3RFPWR.getOrientation() == JSlider.HORIZONTAL) {
                            value = this.valueForXPosition(jSliderElecraftK3RFPWR.getMousePosition().x);
                        } else if (jSliderElecraftK3RFPWR.getOrientation() == JSlider.VERTICAL) {
                            value = this.valueForYPosition(jSliderElecraftK3RFPWR.getMousePosition().y);
                        }
                        jSliderElecraftK3RFPWR.setValue(value);
                    }
                }
            );

在我的代码中没有引用确切行的异常:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at 
javax.swing.plaf.metal.MetalSliderUI.installUI(MetalSliderUI.java:92) at 
javax.swing.JComponent.setUI(JComponent.java:662) at 
javax.swing.JSlider.setUI(JSlider.java:300) at 
HamRadioIntegrator_N3ZH.JFrameRadio.(JFrameRadio.java) at 
HamRadioIntegrator_N3ZH.JFrameRadio$550.run(JFrameRadio.java) at
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at 
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:678) at 
java.awt.EventQueue.access$000(EventQueue.java:86) at 
java.awt.EventQueue$1.run(EventQueue.java:639) at 
java.awt.EventQueue$1.run(EventQueue.java:637) at 
java.security.AccessController.doPrivileged(Native Method) at 
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:648) at 
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at 
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at 
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at  
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

对于解决这个只发生在 Mac 上的问题,您有什么建议吗?

霍华德

最佳答案

没有 SSCCE 很难说(没有 Mac 更难测试)但这些问题通常是由于未能更新 EDT 上的 GUI 而引起的。查看Concurrency in Swing Java 教程的类(class)了解更多详细信息。

关于java - jSlider 转到点击位置 - 仅在 Macintosh 上出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6236998/

相关文章:

java - 限制在 Java 中运行特定代码段的线程数的最佳方法?

javascript - 使多个 AJAX 调用 $.when.apply($, array) 无法正常工作

java - 为什么我会收到 InputMismatchException?

c - 如何更改以下 LINUX 的 Makefile,使其在 MACOS 上也能运行

java - 如何为 java.awt.Frame 进行键绑定(bind)?

java - 我如何在 mysql 数据库更新后立即运行脚本(cronjob)

macos - Apple 帮助手册教程

macos - Mac OS X 上 libmath 的 $fenv_access_off 函数是什么?

java - 如何在 Swing 应用程序中更新 JavaFX BarChart?

java - 在 iOS7 中编码 UIImage 并在 Java 中解码(Base64)