AWT Frame in eine eigene klasse auslagern und aufrufen

Java_RY

Mitglied
Hallo zusammen,
ich bin mir sicher Ihr könnt mir helfen, ich wäre sehr dankbar.
Ich bin gerade dabei in einem Weiterbildungskurs das Java zu lernen.
Wir sind nun im Grafischen teil angelangt, wir bauen viele übungsklassen mit Frame.
nun wollte ich mir ein wenig zeit und Tipparbeit erleichtern und habe folgende klasse geschrieben.
DieFrame.java sieht so aus.
Java:
import java.awt.Frame;
import java.awt.event.*;

public class DieFrame extends Frame {
   private static final long serialVersionUID = 1L;
   public DieFrame(String derTitel, int xwert, int ywert)
   {
      setTitle(derTitel);
     setSize(xwert,ywert);
  
  addWindowListener(new WindowAdapter()
     {
       public void windowClosing(WindowEvent e)
       {
         System.exit(0);
       }
     });
   }
}
Nun wollte ich das in meiner Programmklasse mittels
DieFrame df = new DieFrame("Getränke Automat",400,300);
Aufrufen.
Wird auch soweit gemacht allerdings funktioniert das nicht ganz richtig.
Die Größe ist nicht angekommen, der Titel fehlt und schließen des Fensters geht auch nicht.
so sieht die
CHKFrame.java aus.
Java:
import java.awt.*;
import java.awt.event.*;
class CHKFrame extends Frame implements ItemListener
{
   private static final long serialVersionUID = 1L;
   String derTitel="Die Getränke Automat";
   int xwert=400;
   int ywert = 300;
   String str1, str2 , fill;
   CheckboxGroup cg;
   Checkbox cbKaffee;
   Checkbox cbTee;
   Checkbox cbSaft;
   TextField tf;

   public CHKFrame()
   {
     DieFrame df=new DieFrame(derTitel,xwert,ywert);
       cg =new CheckboxGroup();
       cbKaffee = new Checkbox("Kaffee",cg,false);
       cbTee = new Checkbox("Tee",cg,false);
       cbSaft=new Checkbox("Saft",cg,false);
       cbKaffee.addItemListener(this);
       cbTee.addItemListener(this);
       cbSaft.addItemListener(this);
       str1= new String("Sie haben ");
       str2=new String(" gewählt");
       fill="";
       tf=new TextField(40);
       Panel p = new Panel();
       p.add(cbKaffee);
       p.add(cbTee);
       p.add(cbSaft);
       p.add(tf);
       add(p);
   }
   public void itemStateChanged(ItemEvent e)
   {   Object o=e.getSource();
  
       if(o==cbKaffee)
         fill="Kaffee";
       if(o==cbTee)
         fill="Tee";
       if(o==cbSaft)
         fill="Saft";
       tf.setText(str1+fill+str2);
     }
}
Diese wird aus einer weiteren klasse
Starter.java in der die main ist aufgerufen.

public class Starter {
   public static void main(String[] args) {

     CHKFrame tf = new CHKFrame();
     tf.setVisible(true);
   }
}
Wo habe ich mein fehler könnt Ihr mir bitte Helfen.
Vielen dank.
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Kannst du bitte das nächste mal deinen Code in Code-Tags setzen: [code=java]//JAVA CODE HERE[/code]
 

Thallius

Top Contributor
Ok um es kurz zu machen. Du erstellst ein Klasse DieFrame (übersetzt heißt das übrigens Sterbendes Gerüst deswegen meine Anmerkung. Bitte vermische nicht deutsch und englisch. Schon gar nicht in einem Wort. Außerdem wenn schon, dann wenigstens DasFrame)

Von dieser Klasse erstellst du eine Instanz in einer Klasse die selbst von Frame erbt. Das ist schon einmal Quatsch. Entferne einfach mal das extends Frame aus deiner CHKFrame Klasse. Dann bekommst du ganz viele Fehler weil du versuchst deine Panel und was du alles erzeugst zu deiner Klasse CHKFramechinzuzufügen. Eigentlich willst du das aber ja deiner dieFrame hinzufügen.

Gruß

Claus
 
X

Xyz1

Gast
Die Idee ansich ist nicht schlecht, aber mit System.exit(0); schließt du das ganze Programm - .dispose() ist hier das Suchwort.

Du musst sogar nicht unbedingt von JFrame erben, macht vieles aber einfacherer.

Der Rest ist i. O.
 

Java_RY

Mitglied
Ok erstmal vielen dank für die Hinweise und anmerkungen und Kritik.
Nur so lernt mann :)
Ich hab jetzt das ganze etwas umgebaut und es funzt.
Meine Klasse die das Ganze aufruft heist jetzt MeinStarter.java und sieht folgendermaßen aus.
Java:
public class MeinStarter
{
   public static void main(String[] args)
   {
     MeinRahmen df = new MeinRahmen("Getränke",400,300);
     df.setVisible(true);
   }

}
Unterschied zwischen davor und jetzt ist das ich den Rahmen mit Parametern aufrufe und nicht das Programm.
MeinRahmen.java hat nun folgenden aufbau
Java:
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.*;
public class MeinRahmen extends Frame  {
    MeinProgramm f;
     private static final long serialVersionUID = 1L;
   public MeinRahmen(String derTitel, int xwert, int ywert)
   {   
     f=new MeinProgramm();
     setTitle(derTitel);
     setSize(xwert,ywert);
     addWindowListener(new WindowAdapter()
     {
       public void windowClosing(WindowEvent e)
       {
         System.exit(0);
       }     
     });
// Das ist neu hinzugekommen.
     Panel p = new Panel();
     p.add(f.cbTee);
     p.add(f.cbSaft);
     p.add(f.cbKaffee);
     p.add(f.tf);
     add(p);     
   }
}
Ich habe nun nach dem ich den Rahmen gebaut habe die elemente integriert
und zuguterletzt habe ich das Programm angepasst.
MeinProgramm.java sieht nun so aus.
Java:
import java.awt.*;
import java.awt.event.*;



 public class MeinProgramm  implements ItemListener
{

   String str1, str2 , fill;
   CheckboxGroup cg;
   Checkbox cbKaffee;
   Checkbox cbTee;
   Checkbox cbSaft;
   TextField tf;

   public MeinProgramm()
   {
       cg =new CheckboxGroup();
       cbKaffee = new Checkbox("Kaffee",cg,false);
       cbTee = new Checkbox("Tee",cg,false);
       cbSaft=new Checkbox("Saft",cg,false);
       cbKaffee.addItemListener(this);
       cbTee.addItemListener(this);
       cbSaft.addItemListener(this);
       str1= new String("Sie haben ");
       str2=new String(" gewählt");
       fill="";
       tf=new TextField(40);       
   }
   
   public void itemStateChanged(ItemEvent e)
   {   Object o=e.getSource();
       if(o==cbKaffee)
         fill="Kaffee";
       if(o==cbTee)
         fill="Tee";
       if(o==cbSaft)
         fill="Saft";
       tf.setText(str1+fill+str2);
   }
   
}
Die Kritik mit der Namenskonvention war angebracht im nachhinein wenn ich mit etwas abstand mir das angesehen habe habe ich gemerkt wie komisch das ganze klingt. Der hinweis extends Frame zu entfernen war ein gute unterstützung. Danke hierfür Thallius.
Der Hinweis mit System.exit und dispose ist richtig allerdings ist es von mir beabsichtigt das Programm als ganzes abzuschiesen.
Und zu guterletzt sorry das ich mein Code nicht richtig eingetragen hatte, wusste nicht wie das geht.
Im Hinweis "Vor dem ersten Posten" ist es nicht klar ersichtlich gewesen.
auch hierfür danke ich sehr. Man Lernt im leben nicht aus.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
P Swing Zufallsbilder auf Frame ausgeben AWT, Swing, JavaFX & SWT 1
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
J Genutzte Methoden in einen Frame einbauen AWT, Swing, JavaFX & SWT 21
H Swing Frame an andere Klassen weitergeben AWT, Swing, JavaFX & SWT 4
olfibits Swing JavaFX-Frame in JDesktopPane darstellen? AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
T Swing Java-Frame bei Programmstart NICHT im Vordergrund öffnen AWT, Swing, JavaFX & SWT 2
A Programm nun in ein Frame basteln AWT, Swing, JavaFX & SWT 1
T Frame öffnet nicht AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M Internal Frame in den vordergrund AWT, Swing, JavaFX & SWT 4
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
Tom299 JavaFX Ähnliche Komponente wie der VB6 Frame? AWT, Swing, JavaFX & SWT 2
L Swing Frame in Thread wird nicht gezeichnet AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
D Buttons erscheinen nicht auf Frame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
P Frame friert ein AWT, Swing, JavaFX & SWT 6
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
Messoras JWindow/Frame durch das man durchklicken kann AWT, Swing, JavaFX & SWT 5
M Swing "Frame.setResizable(false);" verschiebt Content? AWT, Swing, JavaFX & SWT 9
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
B JFrame immer an gleicher stelle auf anderem Frame AWT, Swing, JavaFX & SWT 5
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
D Buttons erscheinen nicht auf dem zweiten Frame AWT, Swing, JavaFX & SWT 4
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
BRoll Frame- Video einbinden machbar? AWT, Swing, JavaFX & SWT 6
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
B Frame always on top nur auf anderem Frame AWT, Swing, JavaFX & SWT 9
S Aufteilung von JPanels in einem Frame AWT, Swing, JavaFX & SWT 13
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
N Swing Endlosschleife blockt Frame AWT, Swing, JavaFX & SWT 11
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
N Swing Frame ungewollt transparent! AWT, Swing, JavaFX & SWT 2
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
Daniel_L Drop von Dateien auf Frame - welche Drop-Location? AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
C LookAndFeel Frame updated nicht vollständig AWT, Swing, JavaFX & SWT 9
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
L Jbutton + jcombobox mit vorhandenen frame verknüfen AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
Z Swing JTextfield auf Frame AWT, Swing, JavaFX & SWT 13
N Swing Frame mit GlassPane und Popup AWT, Swing, JavaFX & SWT 5
L Frame Schließen und neustarten AWT, Swing, JavaFX & SWT 4
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
P Frame "always on top" und welche GUI? AWT, Swing, JavaFX & SWT 5
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
J Swing Frame öffnen aus Frame mit JButton AWT, Swing, JavaFX & SWT 2
X Alte Frame-Größe beim wiederholten Aufruf AWT, Swing, JavaFX & SWT 5
M erstes Frame wartet auf die Auswertung eines zweiten AWT, Swing, JavaFX & SWT 8
J Frame-Steuerelement AWT, Swing, JavaFX & SWT 2
L Swing Flackern in Frame bei erstem Klick AWT, Swing, JavaFX & SWT 19
F Hintergrundbild im Frame AWT, Swing, JavaFX & SWT 11
S Zeichnen führt zu transparentem Frame AWT, Swing, JavaFX & SWT 6
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
B Frame im Frame? AWT, Swing, JavaFX & SWT 4
C WindowListener Frame AWT, Swing, JavaFX & SWT 8
P klassenübergreifendes Frame AWT, Swing, JavaFX & SWT 6
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
J Hintergrund Label-Frame AWT, Swing, JavaFX & SWT 3
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
S Swing Panelgröße anpassen wenn Frame maximiert wird AWT, Swing, JavaFX & SWT 2
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
A Hintergrund von einem Frame ändern AWT, Swing, JavaFX & SWT 3
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5
M Im Frame wird nur die Menüleiste erstellt und nicht die Tabelle? AWT, Swing, JavaFX & SWT 3
N Swing außerhalb des Hauptframe Komponente/Frame öffnen AWT, Swing, JavaFX & SWT 2
T Mehrere sich bewegende Objekte in einem Frame AWT, Swing, JavaFX & SWT 14
J "Warte Frame" AWT, Swing, JavaFX & SWT 3
K Swing JDialog aus Frame ausrufen AWT, Swing, JavaFX & SWT 2
M Swing Dynamischer Frame AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben