在Java applet中更改外观和感觉

3

好的,我制作了一个测试Java小程序来确保我知道如何制作它们,但是默认的外观看起来非常丑陋。因此,我想要切换到Nimbus,但我的代码不起作用。我已经花了大约一个小时在谷歌上搜索,但没有找到任何结果,除了一个论坛有这个问题,但我无法理解其中的答案。有什么建议吗?如果这很难理解,我很抱歉。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;

public class Websitetest extends JApplet implements ActionListener, Runnable {

    boolean i = false;
    Color red = new Color(255, 0, 0);
    Color lightgrey = new Color(200, 200, 200);
    Thread runner;    

    public void init() {
        setLookAndFeel();
        Button dp = new Button("Don't press");
        dp.addActionListener(this);
        FlowLayout flow = new FlowLayout();
        setLayout(flow);
        add(dp);
    }

    public void paint(Graphics screen) {
        Graphics2D screen2D = (Graphics2D) screen;
        if (i == false) {screen2D.setColor(lightgrey);}
        else {screen2D.setColor(red);}
        screen2D.fillRect(0, 0, getSize().width, getSize().height);
        screen2D.setColor(Color.black);
        if (i == false) {screen2D.drawString("", 5, 60);}
        else {screen2D.drawString("I SAID DON'T PRESS!", 90, 60);}
    }

    public void start() {
        if (runner == null) {
            runner = new Thread(this);
            runner.start();
        }
    }

    public void stop() {
        if (runner != null) {
            runner = null;
        }
    }

    public void run() {
        Thread thisThread = Thread.currentThread();
    }

    public void actionPerformed(ActionEvent event) {
        i = true;
        repaint();
    }

    private void setLookAndFeel() {
        try {
          UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Exception exc) {
            //ignore error
        }
    }
}

将代码中的 } catch (Exception exc) { //ignore error } 修改为 } catch (Exception exc) { exc.printStackTrace(); },并将修改后的代码复制粘贴到问题描述中。 - Andrew Thompson
1个回答

3

Oracle官网上的这个页面提到Nimbus主题可能不可用。他们使用以下代码片段来切换到Nimbus (如果可用)

try {
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
            UIManager.setLookAndFeel(info.getClassName());
            break;
        }
    }
} catch (Exception e) {
    // If Nimbus is not available, you can set the GUI to another look and feel.
}

由于您在设置Nimbus之前没有检查其是否存在:您确定它确实在您的系统上可用吗?

我建议先删除catch子句,看看是否会收到有关未安装Nimbus的错误消息。


我在我的应用程序中使用了Nimbus,但似乎在小程序上无法正常工作。 - Jdman216
应用程序 <> 小程序。请幽默一下,暂时移除 catch - Frank van Puffelen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接