Wyswietlanie dostepnych czcionek

Odpowiedz Nowy wątek
2011-07-19 23:48
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?

Pozostało 580 znaków

2011-07-20 07:37
Str_34
0

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

Pozostało 580 znaków

2011-07-20 09:09
bo

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.

Pozostało 580 znaków

2011-07-20 21:46
0

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

edytowany 1x, ostatnio: klapaucius, 2011-07-20 21:46

Pozostało 580 znaków

2011-07-20 23:06
bo
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.

Pozostało 580 znaków

2011-07-20 23:32
0

Serdecznie dziękuję za pomoc!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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