Wyswietlanie dostepnych czcionek

0

Witam. Uczę się Javy z książki Marcina Lisa - Praktyczny kurs java. I mam ćwiczenie do wykonania: napisanie programu, który bedzie wyswietlal w konsoli liste dostepnych czcionek w systemie.
Oto moj kod:

 
import javax.swing.JApplet;
import java.awt.*;

public class Main extends JApplet{
  static Font[] fonts;
  static String[] fontNames;
  public void init(){
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    fonts = ge.getAllFonts();
    fontNames = ge.getAvailableFontFamilyNames();
  }
  public static void main(String args[]){
      for(int i = 0; i < fonts.length; i++){
        System.out.println(fonts[i].getFontName() + fontNames[i]);
      }
  }
}

Kod sie kompiluje, ale przy odpaleniu wyskakuje wyjatek:
user image
Dlaczego?

0

Skoro to applet, wybierz Run as Applet zamiast Run as Application

1

Ten kod jest bezużyteczny.
Jeśli zostanie uruchomiony jako aplikacja, to nie wykona się metoda init() i tablica fonts będzie nullem => błąd NullPointerException.
Jeśli zostanie uruchomiony jako aplet, to nie wykona się metoda main() i nic nie zostanie wypisane.

0

W takim razie jak przekształcić kod, aby wyświetlał liste dostępnych czcionek w konsoli (jako aplikacja, a nie aplet) ?

1
import java.awt.*;

public class Main
{
  static Font[] fonts;
  static String[] fontNames;

  public static void main(String args[]){
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    fonts = ge.getAllFonts();
    fontNames = ge.getAvailableFontFamilyNames();
      for(int i = 0; i < fonts.length; i++){
        System.out.println(fonts[i].getFontName() + fontNames[i]);
      }
  }
}

Będzie błąd wykonania jeżeli tablica fontNames ma mniej elementów niż tablica fonts (u mnie tak właśnie jest). Proponuję byś użył tylko tablicy fontNames.

0

Serdecznie dziękuję za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1