ubuntuusers.de

Java GUI

Status: Ungelöst | Ubuntu-Version: Ubuntu
Antworten |

letow

Avatar von letow

Anmeldungsdatum:
18. April 2007

Beiträge: 39

Wohnort: Österreich

Tagchen

Ich habe vor Tic Tac Toe in Java zu programmiern,das ist nicht das Problem.
Es liegt bei mir nur an Java , wenn ich einfache GUIs mit Java.swing mache reagieren sie nicht.
Man kann die Fenster nicht schließen und wenn man sie bewegt verschwindet der Inhalt.

Es kommt immer die Meldung

"XXX ist not responding
You may choose to wait a short while for it to continue or force the application to quit entirely."
WAIT FORCE TO QUIT

Ich habe kein Compi/Beryl laufen.
Das Programm mit dem ich teste sieht so aus damit klar ist das es nicht am gecodeten liegt:

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame extends JFrame {



	JButton but=new JButton("Button 1");

	private static final long serialVersionUID = 1L;


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Frame a=new Frame("Test 1");

	}

	public Frame(String title) {
		super(title);
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		add(but);

		pack();
		setVisible(true);


	}
}

Hoffentlich wisst ihr eine Loesung fue mein Problem.

mft letow

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17618

Wohnort: Berlin

Funktioniert bei mir prächtig, abgesehen davon, daß der Button keinen ActionListener hat um etwas sinnvolles zu tun.
Fensterverschieben klappt, Fenster schließen klappt.

XXX sehe ich im Quellcode nicht - wie kommt es in Deine Fehlermeldung?
Das ist was anderes - richtig?
Was soll dann der Democode?

Welche IDE ist das, die
// TODO Auto-generated method stub
generiert hat, und wer hatte die Idee:
private static final long serialVersionUID = 1L;
wozu ist das gut?

Welche Javaversion hast Du installiert?
Wie kompilierst Du den Code?
Wie startest Du den?
Was ist die komplette Fehlermeldung?

DaDa_is_Muss

Avatar von DaDa_is_Muss

Anmeldungsdatum:
10. Juni 2007

Beiträge: 268

Hab deinen Code mal kurz kompiliert und ausgefürt. Habe das Problem hier nicht. Java Version: 1.6.0_06 unter Ubuntu 8.04

fuchsfuchsfuchs Team-Icon

Maskottchen
Avatar von fuchsfuchsfuchs

Anmeldungsdatum:
23. Juni 2008

Beiträge: 5650

Wohnort: Confoederatio Helvetica

Laeuft hier.

@ User unknown:
Die erstellten Kommentare sehen aus wie Eclipse,
die SerialVersionUID = 1l ist auch ein Eclipse default. JFrame ist serialisierbar, somit braucht jede Klasse,
die es erweitert, eine SerialVersionUID vom Typ long. Ansonsten: (ohne surpress warnings): Warnung.

Daher auch von mir die Frage: wie wird das uebersetzt (Eclipse?), ist das wirklich der komplette Code?
(ich bin der Meinung, dass ein Viewer mit Main und das JFrame Objekt getrennte Klassen sein sollten. Muss aber nicht.)
Welches JDK ist installiert, mit welchem JRE wird es ausgefuehrt?

etc. pp.

Fuchs

letow

(Themenstarter)
Avatar von letow

Anmeldungsdatum:
18. April 2007

Beiträge: 39

Wohnort: Österreich

XXX sehe ich im Quellcode nicht - wie kommt es in Deine Fehlermeldung?

Ich habe mit XXX den Namen des Frames gemeint, sollte in diesem Fall lauten "Test 1".

Welche IDE ist das, die
// TODO Auto-generated method stub
generiert hat, und wer hatte die Idee:
private static final long serialVersionUID = 1L;
wozu ist das gut?

Ich benutze Eclipse die die TODO-Kommentar schreibt, sie hatte auch die "Idee" mit der serialVersionUID.
Was diese long-Zahl macht weiß ich selbst nicht, aber sie schadet nie.

Welche Javaversion hast Du installiert?

vogon% java -version
java version "1.6.0"
OpenJDK Runtime Environment (build 1.6.0-b09)
OpenJDK Client VM (build 1.6.0-b09, mixed mode, sharing)
Die JRE die ich nutze ist : java-1.5.0-gcj-4.2-1.5.0.0

Wie kompilierst Du den Code?
Wie startest Du den?

Ich mach alles in Eclipse, schreiben,compilieren,starten.

Was ist die komplette Fehlermeldung?

Das war die komplette Fehlermeldung, vll erklärt es ein Screenshot besser.

Ungültiges Makro

Dieses Makro ist nicht verfügbar

fuchsfuchsfuchs Team-Icon

Maskottchen
Avatar von fuchsfuchsfuchs

Anmeldungsdatum:
23. Juni 2008

Beiträge: 5650

Wohnort: Confoederatio Helvetica

Darf ich empfehlen das mit dem Sun JDK sowie dem beiliegenden Sun JRE mal zu probieren?

Fuchs

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17618

Wohnort: Berlin

fuchsfuchsfuchs hat geschrieben:

Darf ich empfehlen das mit dem Sun JDK sowie dem beiliegenden Sun JRE mal zu probieren?

Das ist von Sun.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17618

Wohnort: Berlin

Diese Kommentare // TODO Auto-generated method stub sind gedacht gelöscht zu werden, wenn Du was tust.
Sie sollen Dich daran erinnern, daß Du da noch nichts getan hast, und daß das evtl. zu wenig ist.
Etwas zu ändern und den Kommentar stehen zu lassen ist - nun ja...

      Frame a=new Frame("Test 1");

Dieses a wird nirgends benutzt hier reicht völlig ein:

new Frame ("Test 1");


aber vielleicht schadet es auch nicht eine benannte Referenz zu generieren.
Eine Demoklasse die man nie serialisieren wird mit einer private static final long serialVersionUID = 1L; auszustatten schadet vielleicht auch nicht - es lenkt blos vom Thema ab.

Ich denke Deine Eclipse-Installation ist ernsthaft gescheitert, ich kann mit diesem Java die Klasse problemlos ausführen.
Wie hast Du eclipse installiert?

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

user unknown hat geschrieben:

private static final long serialVersionUID = 1L;
wozu ist das gut?

http://gd.tuwien.ac.at/languages/java/GoToJava2/html/k100257.html#versionierung

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17618

Wohnort: Berlin

Achso

OpenJDK Runtime Environment (build 1.6.0-b09)
OpenJDK Client VM (build 1.6.0-b09, mixed mode, sharing)
Die JRE die ich nutze ist : java-1.5.0-gcj-4.2-1.5.0.0

JRE heißt Java Runtime Environment.
Welches benutzt Du also?

Das zweite ist nicht von Sun (gcj) - gcj ist das (der) Gnu-(Compiler für?)-Java .

letow

(Themenstarter)
Avatar von letow

Anmeldungsdatum:
18. April 2007

Beiträge: 39

Wohnort: Österreich

Ich hab jetzt alles auf Sun umgestellt, das Problem besteht weiterhin.

Eclipse wurde ganz einfach aus den Paketquellen installiert,es gab beim Installiern schon ein paar Fehler
die ich aber beheben konnte.(keine Autovervollständigung, Zeilennummer konnte nicht angezeigt werden ..., nichts gravierendes)

java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)

Ark

Avatar von Ark

Anmeldungsdatum:
22. März 2008

Beiträge: 94

Nebenbei: Mit welcher JRE startest du Eclipse? Man kann irgendwo (ja, wo nur? xD) festlegen, in welcher Reihenfolge Eclipse nach einer genügenden JRE suchen soll; der erste Eintrag sollte auch dort die Sun-JRE sein. Und ich glaube, man kann auch für die Programme, die man testen will, festlegen, welche JRE genommen werden soll. Wenn ich nur wüsste, wo das noch mal einzustellen geht ...

Ark

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17618

Wohnort: Berlin

@ Lunar:
Wenn man die Serialisisierung nicht benutzt, dann läßt man sie weg - oder?

fuchsfuchsfuchs Team-Icon

Maskottchen
Avatar von fuchsfuchsfuchs

Anmeldungsdatum:
23. Juni 2008

Beiträge: 5650

Wohnort: Confoederatio Helvetica

@user unkown:
Wie gesagt, laesst man diesen Typ weg und gibt kein SurpressWarning, dann erzeugt es eine Warnung, was unschoen ist.

@ark:

Project → Properties → Java Build Path → Libraries

Fuchs

phst

Anmeldungsdatum:
24. Juni 2007

Beiträge: 527

Hallo, setVisible ist modal. Du musst ein Swing-Fenster auf ganz bestimmte Art und Weise initialisieren, nicht einfach im Konstruktur deines JFrames:
http://java.sun.com/javase/6/docs/api/javax/swing/package-summary.html, Abschnitt „Swing’s Threading Policy“.
So geht es beispielsweise (wenn dein Hauptframe „MainFrame“ heißt):

class Application implements Runnable {
  public void run() {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception ex) {
      ex.printStackTrace(); // hier vernünftige Ausnahmebehandlung aufügen
    }
    JFrame mainFrame = new MainFrame();
    mainFrame.setVisible(true);
  }
  public static void main(String[] args) {
    Application application = new Application();
    SwingUtilities.invokeLater(application);
  }
} 


Du kannst auch Netbeans benutzen, dort wird solcher Code automatisch erstellt und du kannst die GUI einfach in einem Designer zusammenklicken.

Antworten |