我的 Java GUI 库在 Windows 上而不是在 Linux 上工作

问题描述

我制作了一个 Java 库来显示 Android 之类的 Toast 消息,称为 JSubs :GitHub

它在我的 Windows 10 计算机上运行良好。

enter image description here

但是每当我在 Linux(Kali Linux) 上尝试时,系统都会崩溃并且消息也无法正确显示

enter image description here

我的驱动程序代码

import com.jaysmito.jsubs.JSubsConstants;
import com.jaysmito.jsubs.SubsFrame;
import com.jaysmito.jsubs.Toast;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws Exception{
        Toast.showToast("Hello World!");
    }
}

我对 Linux 没有太多经验。

我怎样才能让它也可以用 Linux 计算?

解决方法

访问“实例”的未初始化值(可能是因为线程)存在问题,其中“this”更合适,因为它保证被设置。例如,SubsFrame 构造函数调用 handleFrameSize() 而 handleFrameSize 使用“instance”-> NullPointerException。

Exception in thread "Thread-0" java.lang.NullPointerException: Cannot read field "label" because "com.jaysmito.jsubs.SubsFrame.instance" is null

Swing UI 更改不应在不同线程中运行。在主调用线程(第一次设置)或稍后在事件调度线程中执行所有 Swing UI 操作。这会影响您的 new Thread(new Runnable ...) 调用中的所有操作,请使用 SwingUtilities.invokeLater(runnable); 作为更改这些后台线程中 UI 的位。

一旦在上面修复并注释掉,我就可以在 Linux 上运行您的应用程序:

 //    if(!this.isAlwaysOnTopSupported()){
 //        throw new Exception("Always on top is not supported!");
 //    }