Изменение внешнего вида апплета Java

Итак, я сделал тестовый java-апплет, чтобы убедиться, что знаю, как их создавать, но внешний вид по умолчанию выглядит действительно уродливым. Так что я хочу переключить его на Нимбус, но мой молчаливый не работает. Я потратил около часа на поиск в 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