我的 Java GUI 库正在 windows 而不是 Linux

My Java GUI Library working on windows not on Linux

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

它在我的 Windows 10 电脑上工作得很好。

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

我的Driver代码:

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!");
 //    }