Zum Inhalt springen

Leeres Fenster


Goddie

Empfohlene Beiträge

Huhu,

ich hab Ausbildung zum FIAE grade angefangen (am Dienstag) und sitz morgen den ganzen tag alleine rum.

Nun hab ich als Aufgabe bekommen, mal ein kleines Fenster in Java zu machen, in dem Hello World steht und das 3 Buttons hat. Die Buttons sollen keinerlei Funktion oder so haben, nur da sein.

Da ich wie gesagt grade erst angefangen habe und meinen Ausbilder noch gar net kenne, soll ich das nur machen damit ich mit Java in Berührung komme (habe voher nur mit PHP / HTML gewerkelt)

Ich darf bzw. soll mir sogar jegliche Hilfe holen, es geht nicht darum das ich es kann, sondern das ich mit Java generell in berührung komme.

Nun hab ich mich ein bischen eingelesen. Allerdings sind das ganze nur Kommandozeilen ausgaben, a bissl mit Variablen spielen etc.

Wie erstelle ich den eine "leere" Java applikation? Also rein ein "Windows Fenster" ?

Irgendwie hab ich das noch net geblickt :) Und da ich mir ja explizit Hilfe holen/ mit Helfen soll frag ich mal hier nach :)

Ich will nu auf keinen Fall einfach nur nen bissl Java Code hier reinkopiert haben, mir währs lieber wenn mir jemand "erklärt" wie es geht :)

Wie gesagt, reine beschäftigungstherapie, da ich morgen alleine bin und mein Ausbilder diese Woche noch im Urlaub ist

Danke und mfg

Sven

Edith sagt Windows darf nicht in doof geändert werden :o

Nachtrag:

Ich muss ja das Abstract WindowKit importieren, richtig?

Bearbeitet von Goddie
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann leite ich dich mal gleich weiter:

Galileo Computing :: Java ist auch eine Insel – 15 Grafische Oberflächen mit Swing

Trail: Creating a GUI with JFC/Swing (The Javaâ„¢ Tutorials)

Auf den beiden Seiten wird erklärt wie man eine grafische Oberfläche mit Java programmiert. Die erste dürfte etwas leichter zu verstehen sein, dafür beschäftigt sich die zweite ebenfalls mit tieferen Details, ist aber auch auf englisch.

Link zu diesem Kommentar
Auf anderen Seiten teilen

zusätzlich zu den Links von Dragon8 auch noch interessant:

javabuch

Zuerst solltests du dir mal die groben Grundlagen der Objektorientierung anschauen.

Was ist eine Klasse? Was ist ein Objekt? Was sind Methoden? Was sind Übergabeparameter und Rückgabewerte?

Danach wird für dich die Klasse JFrame von Bedeutung sein. JFrame ist dann nämlich genau das was du brauchst => ein Fenstern.

Und zum Schluss JButton. Wichtig hierfür: wie setzt man GUI-Objekte auf andere Objekte? Da du mit ziemlicher Sicherheit beim einfügen von 3 Buttons ein paar "unlogische Sachen" erleben wirst: schau dir an was ein Layout (-Manager) ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eingelesen hab ich mich in Java schon ein wenig, ist halt schon komplizierter und anders wie PHP+HTML :)

Ich hab jetzt hier mal nen stück quelltext, in den Comments steht drin was ich meine was das grad ist, wüsste gern ob ich das so richtig begriffen habe.


import javax.swing.JFrame; // hier wird erstmal die Bibiliothek importiert

public class Uebung // hier leitet man eine neue Klasse ein und gibt ihr nen Namen
{
public static void main( String[] args ) // das hier ist die Main Methode
{ // (was da nun im einzelnen public, static, void etc. machen, kA find auch nirgends eine erklärung )
JFrame f = new JFrame( "Das Fenster zur Welt" ); // Ist das hier nun schon ein Objekt? Für mich sieht das so aus wie : der Variablentyp JFrame mit namen F = inhalt

f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); //die einzelnen Funktionen/anweisungen für "f", also mein Objekt/Variable
f.setSize( 300, 200 );
f.setVisible( true );
}
}[/PHP]

Wenn ich da irgendwo Mist stehen hab, bitte verbessern :) mir gehts darum ob ich den Grundaufbau gerafft hab

Danke und mfg

Goddie

Link zu diesem Kommentar
Auf anderen Seiten teilen

import javax.swing.JFrame; // hier wird erstmal die Bibiliothek importiert

Stimmt.

public class Uebung // hier leitet man eine neue Klasse ein und gibt ihr nen Namen

Stimmt auch schonmal

public static void main( String[] args ) // das hier ist die Main Methode

{ // (was da nun im einzelnen public, static, void etc. machen, kA find auch nirgends eine erklärung )

Das ist die Main-Methode, richtig.

public = öffentliche Methode, also nicht nur innerhalb der Klasse sichtbar

static = statische Methode, sie kann auch ohne ein Objekt der Klasse Uebung aufgerufen werden

void = Sie hat keinen Rückgabewert

JFrame f = new JFrame( "Das Fenster zur Welt" ); // Ist das hier nun schon ein Objekt?

Ja, in dieser Zeile wird schon das Objekt erzeugt und eine Referenz auf dieses Objekt in f gespeichert.

f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); //die einzelnen Funktionen/anweisungen für "f", also mein Objekt/Variable

f.setSize( 300, 200 );

f.setVisible( true );

Kann man so sagen, ja.

Link zu diesem Kommentar
Auf anderen Seiten teilen

public = öffentliche Methode, also nicht nur innerhalb der Klasse sichtbar

Versteh ich net ganz :o Heisst das ich kann auch aus anderen klassen heraus auf die Methode zugreifen?

z.B ne neue File, neue Class.

static = statische Methode, sie kann auch ohne ein Objekt der Klasse Uebung aufgerufen werden

Bedeutet grob->Programm/Anwendung/what ever startet auch ohne Inhalt?

void = Sie hat keinen Rückgabewert

Rückgabewerte könnten zB eingaben durch den Benutzer sein? Oder ist damit etwas internenes gemeint, was durch irgendwelche Anweisungen ensteht?

Sry für die doofen Fragen, aber ich wills halt gern verstehen und net nur auswendig lernen :o

Link zu diesem Kommentar
Auf anderen Seiten teilen

Heisst das ich kann auch aus anderen klassen heraus auf die Methode zugreifen?

z.B ne neue File, neue Class.

Das heißt es sogesehen, ja. Wenn eine Methode einer Klasse als public gekennzeichnet ist, kannst du sie aus allen anderen Klassen, die Zugriff auf die erste Klasse haben, aufrufen. Bei einer normalen Methode muss dazu aber ein Objekt vorhanden sein,...

Bedeutet grob->Programm/Anwendung/what ever startet auch ohne Inhalt?

...bei Methoden die aber mit static gekennzeichnet sind, kannst du die Methode auch aufrufen ohne dass du ein Objekt der Klasse erzeugt hast. Diese Methoden unterliegen dann natürlich gewissen Einschränkungen.

Rückgabewerte könnten zB eingaben durch den Benutzer sein? Oder ist damit etwas internenes gemeint, was durch irgendwelche Anweisungen ensteht?

Rückgabewerte sind so gesehen Ergebnisse die, die Funktion (Methode) zurückliefert. Ob das nun einfache Werte sind, ob der Aufruf erfolgreich war, oder komplexe Ergebnisse einer Berechnung oder was auch immer, ist dem Entwickler überlassen.

Ich würde dir aber trotzdem dringend empfehlen in eins der beiden hier schon geposteten Bücher zu schauen und mir nochmal alles genau durchzulesen und vll nen paar Übungen dazu zu machen. Weil die Sachen die ich eben erklärt habe sind Grundlagen ohne die es sich nicht wirklich lohnt weiter zu machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm irgendwie funzt das net, ich bekomm keine Fehlermeldung beim Compilieren, aber mir wird kein Button angezeigt :(

import javax.swing.*;      

public class Uebung
{
public static void main( String[] args )
{
JFrame f = new JFrame( "Aufgabe Claudia" );

f.setSize( 300, 300 );
f.setVisible( true );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );


JButton button1 = new JButton( "Ende" );
f.add( button1 );

}
}[/PHP]

Edith: Buch hab ich nebenher auf :) ich les ja darin, aber es kommen halt immer wieder Fragen auf, deren Antworten nicht direkt aus dem Buch für mich ersichtlich sind :)

Bearbeitet von Goddie
Link zu diesem Kommentar
Auf anderen Seiten teilen

du bist auf den richtigen Weg.

Dein Butten nimmt jetzt aber das ganze Fester ein. Das StandardLayout (welches die größe der einzelnen Komponenten an die Größe des Eigentümers anpasst) von JFrame ist BorderLayout. Du kannst das Layout mit frame.setLayout() auch ändern (z.B. FlowLayout (allees nebeneinander), GridLayout(Tabellenform) etc...). Wenn du setLayout(null) machst, kannst du dich um die Größe deines Buttons selbst kümmern mit button.setBounds(x-position, y-position, breite, höhe.

setVisible(true); solltest du ganz am Schluss machen, sonnst fügst du den Button hinzu nachdem das Frame schon sichtbar ist. Der Button ist dann zwar da, wird aber (noch) nicht gezeichnet. Wenn du dein Frame kurz schleißt und neu öffnest siehst du ihn. Eine andere möglichkeit wäre ein frame.repaint(); nach dem Einfügen.

Bearbeitet von speedi
Link zu diesem Kommentar
Auf anderen Seiten teilen

So, ich wollt nu mal übers Ziel meiner eigentlichen Aufgabe hinaus und versuch grade dem "Ende" Button eine Fuktion zu geben.

Allerdings lässt sich das ganze nicht compilieren :o

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


public class Uebung
{
public static void main( String[] args )
{
JFrame f = new JFrame( "Aufgabe Claudia" );
f.setLayout(null);

f.setSize( 300, 300 );
f.setVisible( true );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

JLabel test = new JLabel ("Hallo Claudia");
f.add (test);
test.setBounds(15,15,100,100);


JButton button1 = new JButton( "Ok" );
f.add( button1 );
button1.setBounds(15, 220, 70, 30);

JButton button2 = new JButton( "Weiter" );
f.add( button2 );
button2.setBounds(100, 220, 75, 30);

JButton button3 = new JButton( "Ende" );
f.add( button3 );
button3.setBounds(190, 220, 70, 30);

button3.addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent e )
{
System.exit( 0 );
}
} );

}
}[/PHP]

Wo ist der Fehler?

Edith: Habs

fehlte noch:

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

Ich dachte wenn ich java.awt.* importiere, hätte ich alles :o

Bearbeitet von Goddie
Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein leider nicht. Der ActionListener liegt in java.awt.event also importiere noch zusätzlich java.awt.event.*

Welche Entwicklungsumgebung nutzt du derzeit? Schau dir mal eclipse an! Da brauchst da braucht nur noch den Cursor hinter den Namen der unbekannten Klasse zu setzen und Strg+Leertaste zu drücken und dir werden schon entsprechende Vorschläge für Imports angezeigt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eclipse aufm Server gefunden und Installiert :)

Ich hab nur folgendes, ich möcht das wenn ich auf den Button drück, das er mir in meinem Fensterchen "Test" schreibt

So wie ich es habe, schreibt er mir das in der Konsole oO

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;



public class Uebung
{
public int test =0;



public static void main( String[] args )
{
JFrame f = new JFrame( "Aufgabe Claudia" );
f.setLayout(null);

f.setSize( 300, 300 );
f.setVisible( true );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );


JLabel test = new JLabel ("Hallo Claudia");
f.add (test);
test.setBounds(15,15,100,100);



JButton button1 = new JButton( "Ok" );
f.add( button1 );
button1.setBounds(15, 220, 70, 30);

JButton button2 = new JButton( "Weiter" );
f.add( button2 );
button2.setBounds(100, 220, 75, 30);

JButton button3 = new JButton( "Ende" );
f.add( button3 );
button3.setBounds(190, 220, 70, 30);

button3.addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent e )
{
System.exit( 0 );
}
} );

button2.addActionListener ( new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
System.out.println("Test");
}
});




}
}[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie erstell ich eigentlich ne Ausführbare Datei? Also etwas das ich net immer in der Eingabeaufforderung starten muss?

Und was muss ich hierran

button2.addActionListener ( new ActionListener()

{

public void actionPerformed (ActionEvent e)

{

System.out.println("Test");

}

});

ändern, damit mir die Ausgabe nicht in der Eingabeaufforderung sondern im GUI angezeigt wird?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine Ausfürhbare Datei kannst du mit eclipse über einen rechtsklick auf Projekt=>Export=>Java=>JAR file erstellen. Eine JAR-Datei lässt sich wenn java korrekt installiert ist mit einem Doppelklick starten. Du kannst aber mit Programmen wie z.B. JSmooth die JAR-Datei auch noch einmal zusätzlich in eine Exe packen. Java Runtime brauchst du jedoch zum ausführen in jedem Fall immer noch.

Um etwas in einem TextField oder einem JLabel auszugeben besitzen diese Klassen eine setText(...)-Methode. Zuerst musst du dir mal eine Ensprechende Text-Komponente auf deine GUI leben und dann kannst du im ActionListener die setText-Methode aufrufen.

Das wird in deinem Fall jedoch nicht funktionieren, da du entweder dann dein TextField auf final setzen musst (d.h. du kannst zur Laufzeit deiner textfield-Variablen nicht einfach ein neues/anderes TextField zuweisen) oder du erstellst eine Klasse die von JFrame erbt, welche dann das TextField als Klassenvariable hat.

Das schaut dann in etwa so aus:


import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;



public class MyFrame extends JFrame{//Die Klasse erbt von JFrame und ist damit selbst auch ein JFrame

	private JButton button1, button2, button3;


	public MyFrame() {

	    setLayout(null);


	    setSize( 300, 300 );     

	    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );



	    JLabel test = new JLabel ("Hallo Claudia");

	    add (test);

	    test.setBounds(15,15,100,100);




	    button1 = new JButton( "Ok" );

	    add( button1 );

	    button1.setBounds(15, 220, 70, 30);


	    button2 = new JButton( "Weiter" );

	    add( button2 );

	    button2.setBounds(100, 220, 75, 30);


	    button3 = new JButton( "Ende" );

	    add( button3 );

	    button3.setBounds(190, 220, 70, 30);


	    button3.addActionListener( new ActionListener() 

	      { 

	      public void actionPerformed( ActionEvent e ) 

	        { 

	           System.exit( 0 ); 

	        } 

	      } );


	    button2.addActionListener ( new ActionListener()

	      {

	      public void actionPerformed (ActionEvent e)

	        {

	          System.out.println("Test");

	        }

	    });


	    setVisible( true ); 

	}


	public static void main(String[] args) {

		new MyFrame();

	}

}

Die textKomponente ist hier jetzt noch nicht drin. Aber deine Buttons sind schonmal Klassenvariablen auf die du in jeder nicht-static-Methode der Klasse zugreifen kannst.

Bearbeitet von speedi
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Bin auch ein totaler Nob und hab grad erst als FIAE angefangen.

Das mit den Fenstern hab ich soweit gecheckt.

Nun meine Frage wie kann ich die Java-Kaffetasse aus der linken Seite der Menü-, Titelleiste verbannen und durch ein eigenes Icon ersetzen? Hab auch schon gegoogelt aber mich interessieren die Kaffepreise in Östereich grad überhaupt nicht *sfg*

:confused:

Danke schon mal vorab :)

Edit: Ich benutze Eclipse

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bin auch ein totaler Nob und hab grad erst als FIAE angefangen.

Das mit den Fenstern hab ich soweit gecheckt.

Nun meine Frage wie kann ich die Java-Kaffetasse aus der linken Seite der Menü-, Titelleiste verbannen und durch ein eigenes Icon ersetzen? Hab auch schon gegoogelt aber mich interessieren die Kaffepreise in Östereich grad überhaupt nicht *sfg*

:confused:

Danke schon mal vorab :)

Edit: Ich benutze Eclipse

Wonach suchst du denn bei google? ^^

Versuch mal "java icon JFrame" das dürfte normal gute ergebnisse bringen..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...