AWT unter Gnome

Status
Nicht offen für weitere Antworten.

Simighourt

Mitglied
Hallo, bin mich grade in das AWT am einarbeiten, bekomme es aber einfach nicht hin mit meinem Linuxrechner an den Projekten die ich für die Schule machen muss zu arbeiten. Mein derzeitiges Programm sieht folgendermaßen aus, läuft mit Windows auch problemlos:

Code:
import java.awt.*;

class JavaPhoneGui extends Frame {
  Button key1 = new Button("1");
  Button key2 = new Button("2");
  Button key3 = new Button("3");
  Button key4 = new Button("4");
  Button key5 = new Button("5");
  Button key6 = new Button("6");
  Button key7 = new Button("7");
  Button key8 = new Button("8");
  Button key9 = new Button("9");
  Button key0 = new Button("0");
  Button key_raute = new Button("#");
  Button key_stern = new Button("*");
  Button hookoff = new Button("Hook off");

  TextField display = new TextField();
  Label state = new Label("ready");
  Panel keyPanel = new Panel();
  Panel keyDisplayPanel = new Panel();
  Panel statePanel = new Panel();

  JavaPhoneGui() {
    setLayout(new BorderLayout(20,20));
    keyPanel.setLayout(new GridLayout(4,3,2,2));
    keyDisplayPanel.setLayout(new BorderLayout(20,20));
    statePanel.setLayout(new BorderLayout(20,20));

    keyPanel.add(key1);
    keyPanel.add(key2);
    keyPanel.add(key3);
    keyPanel.add(key4);
    keyPanel.add(key5);
    keyPanel.add(key6);
    keyPanel.add(key7);
    keyPanel.add(key8);
    keyPanel.add(key9);
    keyPanel.add(key_raute);
    keyPanel.add(key0);
    keyPanel.add(key_stern);

    keyDisplayPanel.add(display, BorderLayout.NORTH);
    keyDisplayPanel.add(keyPanel, BorderLayout.CENTER);
    statePanel.add(hookoff,BorderLayout.CENTER);
    statePanel.add(state, BorderLayout.NORTH);

    add(keyDisplayPanel, BorderLayout.CENTER);
    add(statePanel, BorderLayout.WEST);

    // Farben
    setBackground(Color.black);
    key1.setForeground(Color.white);
    key1.setBackground(Color.black);
    key2.setForeground(Color.white);
    key2.setBackground(Color.black);
    key3.setForeground(Color.white);
    key3.setBackground(Color.black);
    key4.setForeground(Color.white);
    key4.setBackground(Color.black);
    key5.setForeground(Color.white);
    key5.setBackground(Color.black);
    key6.setForeground(Color.white);
    key6.setBackground(Color.black);
    key7.setForeground(Color.white);
    key7.setBackground(Color.black);
    key8.setForeground(Color.white);
    key8.setBackground(Color.black);
    key9.setForeground(Color.white);
    key9.setBackground(Color.black);
    key0.setForeground(Color.white);
    key0.setBackground(Color.black);
    key_raute.setForeground(Color.white);
    key_raute.setBackground(Color.black);
    key_stern.setForeground(Color.white);
    key_stern.setBackground(Color.black);
    state.setForeground(Color.white);
    hookoff.setBackground(Color.black);
    hookoff.setForeground(Color.white);

    setTitle("JavaPhone");
    setSize(250,250);
    setLocation(300,300);
    setResizable(false);
    setVisible(true);
  }
}

Kompilieren lässt sich das Ding sowie mit Windows als auch mit Linux problemlos. Wenn ich die Klasse JavaPhoneGui unter Linux erzeuge bekomme ich folgende Fehlermeldung:

simon@simon:/media/THM_LYRA/Schule/Info/Gui/JavaPhone$ java JavaPhone
Exception in thread "main" java.awt.AWTError: Cannot load AWT toolkit: gnu.java.awt.peer.gtk.GtkToolkit
at java.awt.Toolkit.getDefaultToolkit() (/usr/lib/libgcj.so.6.0.0)
at java.awt.Window.getToolkit() (/usr/lib/libgcj.so.6.0.0)
at java.awt.Frame.addNotify() (/usr/lib/libgcj.so.6.0.0)
at java.awt.Window.show() (/usr/lib/libgcj.so.6.0.0)
at java.awt.Component.show(boolean) (/usr/lib/libgcj.so.6.0.0)
at java.awt.Component.setVisible(boolean) (/usr/lib/libgcj.so.6.0.0)
at JavaPhoneGui.JavaPhoneGui() (Unknown Source)
at JavaPhone.main(java.lang.String[]) (Unknown Source)
at gnu.java.lang.MainThread.call_main() (/usr/lib/libgcj.so.6.0.0)
at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)
Caused by: java.lang.ClassNotFoundException: gnu.java.awt.peer.gtk.GtkToolkit not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./,file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
at java.lang.ClassLoader.loadClass(java.lang.String, boolean) (/usr/lib/libgcj.so.6.0.0)
at java.lang.ClassLoader.loadClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0)
at java.lang.Class.forName(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
at java.awt.Toolkit.getDefaultToolkit() (/usr/lib/libgcj.so.6.0.0)
...9 more

Bin total ratlos was ich tun soll, wäre dankbar für einen guten Rat^^
Simon
 
Hi,

hab deinen Code gerade getestet (unter Ubuntu 6.06 mit Java 5 und Java 6 beta). Geht und läuft soweit. Mit dem GNU-Java gehts allerdings nicht. Wenn du dabei bleiben willst installier das Paket "libgcj6-awt" (so heisst es wenigstens unter Ubuntu).

Wenn du noch Anfänger bist würde ich dir empfehlen SUN's Java zu installieren. Mit den Besonderheiten anderer Java Implementierungen würde ich mich am Anfang noch nicht belasten wollen.

Hoffe es hilft,

Caffè Latte
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben