ubuntuusers.de

[Java]AWT-Elemente werden nicht dargestellt

Status: Gelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

greenmoon

Anmeldungsdatum:
10. März 2010

Beiträge: 269

Hallo erstmal,

ich habe mal wieder ein Problem und hoffe, ihr könnt mir helfen ☺ Mein Problem liegt bei JAVA, das irgendwie nicht ganz zu funktionieren scheint. In Websites eingebundene JAVA Applets arbeiten, wie sie sollen, aber wenn ich mit Ellipse selbst Sachen Programmiere und diese dann als Applikation starte, funktionieren alle nicht, die über eine graphische Darstellung verfügen. "Einfache" Ausgaben über system.out.print() klappen zwar, aber sobald mich z.B. ein Fenster habe, indem ein Knopf [ohne Funktionalität] sein soll, sehe ich nur ein Fenster und eben keinen Knopf. Selbiges gilt für einen Stift, der auf den Fenster einen Strich zeichnen soll, Fenster da aber Stift nicht. Da ich JAVA für die Schule zum Programmieren brauche und auch GUIs sehen möchte hoffe ich, dass sich das Problem beheben lässt.

Liebe Grüße und schöne Osterfeiertage.

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21846

Wohnort: Lorchhausen im schönen Rheingau

Bitte gib künftig deine Ubuntuversion beim Erstellen eines Threads mit an und bemühe dich um etwas aussagekräftigere Betreffzeilen, danke.

Nur mal ins Blaue geraten, du benutzt compiz und versuchst, mit AWT die Fensterinhalte zu zeichnen?

greenmoon

(Themenstarter)

Anmeldungsdatum:
10. März 2010

Beiträge: 269

redknight schrieb:

Bitte gib künftig deine Ubuntuversion beim Erstellen eines Threads mit an und bemühe dich um etwas aussagekräftigere Betreffzeilen, danke.

Nur mal ins Blaue geraten, du benutzt compiz und versuchst, mit AWT die Fensterinhalte zu zeichnen?

Ja, da hast du natürlich recht, allerdings fällt mir spontan einfach nichts besseres ein, sorry.

Ich benutze Ecplise und arbeite auch noch mit der Basis Bibliothek, also eigentlich ganz simpel. Beispiel:

1
2
3
import basis.*;
private Fenster fenster = new Fenster();
private Knopf knopf = new Knopf("", 20, 20, 20, 20);

sehen sollte ich ein Fenster und darauf einen Knopf ohne Aufschrift, mit der linken oberen Ecke an den Koordinaten 20 und 20 und der größe 20px * 20px. Aber das klappt halt nicht.Aber

1
System.out.println("5");

JAVA grundsätzlich klappt also, der oben geschriebene Codeasuschnitt allerdings auch, beides Zusammen aber leider nicht.

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21846

Wohnort: Lorchhausen im schönen Rheingau

Ich hab keine Ahnung, was das Basispaket tut. Und immer noch keine Ahnung, ob du compiz benutzt…

Edit: basis scheint (laut OpenSUSE-Forum) auf AWT zu basieren bzw dieses zu benutzen. Bei mir half (eben im Zusammenhang mit compiz)

echo "export AWT_TOOLKIT=MToolkit" >> .gnomerc

in einem Terminal und anschliesendem Ausloggen/wiedereinloggen.

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21846

Wohnort: Lorchhausen im schönen Rheingau

Nachtrag: Markiere den Thread bitte als gelöst, falls das geholfen hat.

greenmoon

(Themenstarter)

Anmeldungsdatum:
10. März 2010

Beiträge: 269

wozu genau soll ich den compiz nutzen?Bis vorhin wusste ich nicht, was das ist und jetzt sehe ich immer noch keinen wirklichen Zusammenhang.

Ich programmiere mit Eclipse und starte auch direkt daraus das geschriebene als Applikation. Ich wüsste jetzt nicht, wie dabei compiz ins Spiel kommen soll.

Hab jetzt mal im Anhang einen Screenshot mit Quellcode, der dafür sorgen soll, dass in der Mitte des Fenster ein Kreis sein sollte und wie man dann im dem Fenster auch sehen kann, sieht man den eben nicht.

Bilder

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21846

Wohnort: Lorchhausen im schönen Rheingau

greenmoon schrieb:

wozu genau soll ich den compiz nutzen?

Je nach verwendeter Grafikkarte wird Compiz automatisch aktiviert (für die Desktopeffekte). Es gibt im Zusammenspiel mit AWT (benutzt du) und compiz (sdagst du nicht, ob du benutzt) bekannte Bugs. Deshalb hab ich nun bereits mehrfach danach gefragt.

Nebenbei: Quellcode kann man - quel surprise - einfach so Posten, wenn man Codeblöcke benutzt. Das ist bedeutend übersichtlicher als ein Screenshot…

greenmoon

(Themenstarter)

Anmeldungsdatum:
10. März 2010

Beiträge: 269

Wenn du mir jetzt auch noch verrätst, wie ich raus bekomme, ob ich compiz benutze, antworte ich dir gerne darauf. Bin noch relativ neu auf Ubuntu, deswegen kenne ich mich leider noch nicht wirklich aus.

Das es die Codeblöcke gibt war mir bekannt, habe die ja selbst hier schon verwendet, ich wollte aber dazu noch zeigen, was man sieht, bzw was halt nicht und habe deswegen den Screen angehangen

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21846

Wohnort: Lorchhausen im schönen Rheingau

An der Konsole mittels

ps -ef | grep compiz

In der GUI: System → Preferences → Appearance: Reiter "Visual Effects" (hab englische GUI). Wenn da etwas qanderes als none/keine steht, benutzt du compiz. Ebenso wenn der Konsolenbefehl mehr als eine Zeile als Antwort gibt.

greenmoon

(Themenstarter)

Anmeldungsdatum:
10. März 2010

Beiträge: 269

Vielen Danke erstmal für die Erklärung.

Also die Konsole spuckt bei mir folgendes aus:

1
2
marvin@Morpheus:~$ ps -ef | grep compiz
marvin    2104  2084  0 14:41 pts/0    00:00:00 grep --color=auto compiz

und auch bei den visuellen Effekten ist die Checkbox "keine" angewählt. Demnach benutze ich also kein Compiz und es kann nicht der Grund für den Fehler sein, richtig?

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21846

Wohnort: Lorchhausen im schönen Rheingau

Richtig. Du benutzt kein compiz. Ich weiß allerdings nicht, ob der AWT-Bug auch mit Metacity auftaucht, Versuch macht klug 😉

greenmoon

(Themenstarter)

Anmeldungsdatum:
10. März 2010

Beiträge: 269

Also, ich hab jetzt das

1
echo "export AWT_TOOLKIT=MToolkit" >> .gnomerc

eingegeben, anschließend wieder neu eingeloggt. Zumindest hat sich was verändert, ich sehe auch kein Fenster mehr sondern bekomme nur noch eine Fehlermeldung in Eclipse

Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-6-openjdk/jre/lib/i386/motif21/libmawt.so
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1646)
	at java.lang.Runtime.load0(Runtime.java:787)
	at java.lang.System.load(System.java:1022)
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1747)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1664)
	at java.lang.Runtime.loadLibrary0(Runtime.java:840)
	at java.lang.System.loadLibrary(System.java:1047)
	at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67)
	at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Toolkit.loadLibraries(Toolkit.java:1614)
	at java.awt.Toolkit.<clinit>(Toolkit.java:1636)
	at java.awt.Component.<clinit>(Component.java:568)
	at test.main(test.java:6)

Die Beurteilung, ob das jetzt wirklich ein Fortschritt ist überlasse ich dir ☺

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21846

Wohnort: Lorchhausen im schönen Rheingau

Puh, ich muß gestehen, ich hab immer sun-java benutzt. Ich weiß nicht, inwiefern sich die Bibliotheken da unterscheiden. Du kannst entweder mit

rm ~/.gnomerc

die erstellte Dateie wieder löschen? Damit wird ab dem nächsten Login die Umgebungsvariable auch nicht mehr gesetzt; oder du probierst es nochmal mit dem richtigen java

sudo apt-get install sun-java6-jdk

Das muß danach glaube ich aber auch in Eclipse eingetragen werden.

Edit: Oder natürlich du benutzt swing statt AWT 😉

greenmoon

(Themenstarter)

Anmeldungsdatum:
10. März 2010

Beiträge: 269

redknight schrieb:

Puh, ich muß gestehen, ich hab immer sun-java benutzt. Ich weiß nicht, inwiefern sich die Bibliotheken da unterscheiden. Du kannst entweder mit

rm ~/.gnomerc

die erstellte Dateie wieder löschen? Damit wird ab dem nächsten Login die Umgebungsvariable auch nicht mehr gesetzt; oder du probierst es nochmal mit dem richtigen java

sudo apt-get install sun-java6-jdk

Das muß danach glaube ich aber auch in Eclipse eingetragen werden.

Edit: Oder natürlich du benutzt swing statt AWT 😉

Also, die Datei kann ich wieder löschen und befinde mich dann auf dem alten Stand, dass ich nur das Fenster zu sehen bekomme. Zwischen den beiden Status kann ich also beliebig wechseln. Auch das installieren der neuen JAVA Version bringt keine Veränderung.

Ich schiebe das hier nochmal nach oben, in der Hoffnung, dass es vielleicht doch noch jemand sieht und eine Lösungsmöglichkeit sieht, obwohl es mittlerweile vielleicht doch eher in ein Programmierforum gehört als in das Ubuntuforum. Ein Wechsel auf swing ist leider auch nicht möglich.

Moderiert von redknight:

Habs mal verschoben und den Titel entsprechend angepasst.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

greenmoon schrieb:

Das es die Codeblöcke gibt war mir bekannt, habe die ja selbst hier schon verwendet, ich wollte aber dazu noch zeigen, was man sieht, bzw was halt nicht und habe deswegen den Screen angehangen

Trotzdem können wir aus dem Screenshot weder mit cut-und-paste zitieren, noch können wir diesen bei uns in Eclipse einfügen, und selbst laufen lassen, und wenn man am Antworten ist, dann hat man auch nicht mals die Miniversion des Bildes vor sich - es wäre also nett den Quellcode nachzutragen.

Zusätzlich einen Screenshot kann man schon mal machen, aber eben zusätzlich.

Dein Stift wird nirgends an das Fenster gebunden. Ohne die basis-Bibliothek zu kennen behaupte ich mal, daß das so nicht geht. Der Stift weiß gar nichts von dem Fenster, in das er zeichnen soll.

Antworten |