java - 我的应用程序使用 AWT,尽管其构建的 jar 使用 Swing。为什么?

标签 java macos swing awt .app

我有一个应用程序,已编译成可执行 jar 文件,例如 app.jar。当我运行它时,它看起来就像一个原生的 Mac 应用程序,这看起来很让人想起我对 swing 的有限知识。然后,我用了Java's appBundler按照列出的说明捆绑 jar 文件,突然同一个项目将启动,看起来像 AWT 应用程序(更加模糊,更加像素化)。

除此之外,jar 文件将以工作目录作为父文件夹启动(如果是 dist/app.jar,则 dist 是工作目录)而应用程序会将我的用户驱动器 (~) 显示为工作目录。

这是我正在捆绑的示例程序:

package test;

import java.io.File;

import javax.swing.JOptionPane;

public class Test{
  public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            JOptionPane.showMessageDialog(null, new File(".").getAbsolutePath());
        }
    });
  }
}

这个 jar 看起来像 swing,上面写着“/Users/me/Documents/app/dist/”。而该应用程序看起来像 AWT,并显示“/Users/me/”。

切换的原因是什么?我更喜欢 swing 和 jar 文件的目录,但我需要将其格式化为应用程序。

最佳答案

尝试强制外观使用“系统”外观...

public void run() {
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
        ex.printStackTrace();
    }
    //...

这应该确保它覆盖任何其他设置...

看看How to Set the Look and Feel了解更多详情

关于java - 我的应用程序使用 AWT,尽管其构建的 jar 使用 Swing。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24920168/

相关文章:

java - 使用 SUM 方法时 Jasper 编译器错误

java - 从 RecyclerView 内的 onClickListener 启动 Activity 后出现 NullPointerException

Java2D : Increase the line width

java - 检查现有文本时自定义控制台 nullPointerException

java - 创建多个标签并将它们保存在列表中以供显示

java - 如何将 Excel 文件从 AWS S3 存储桶获取到 Java 中的 MultipartFile 中

php - 如何在 Mac OS X 上安装 MySQL/Apache/PHP?

cocoa - 写入问题 `NSOutputStream` 。

Cocoa分布式对象、GC客户端、非GC服务器

java - 将 JFrame 捕捉到屏幕边缘