Промяна на външния вид и усещането на Java аплет

Добре, така че направих тестов java аплет, за да се уверя, че знам как да ги направя, но външният вид и усещането по подразбиране изглеждат наистина грозни. Така че искам да го превключа на Nimbus, но моят тацит не работи. Търсих в Google за около час, но нищо не излезе, освен един форум, който имаше въпроса, но нямаше отговори, които можех да разбера. Някакви идеи? И ако това е трудно за разбиране, съжалявам.

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
        }
    }
}

person Jdman216    schedule 02.12.2012    source източник
comment
Променете } catch (Exception exc) { //ignore error } на } catch (Exception exc) { exc.printStackTrace(); } и копирайте/поставете резултата като редакция на въпроса.   -  person Andrew Thompson    schedule 03.12.2012


Отговори (1)


Тази страница на сайта на 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 не е инсталиран.

person Frank van Puffelen    schedule 02.12.2012
comment
Използвал съм Nimbus за моите приложения, но изглежда просто не работи с аплети. - person Jdman216; 02.12.2012
comment
Приложения ‹› Аплети. Усмихнете ме и просто махнете catch за момент. - person Frank van Puffelen; 02.12.2012