Grafikfenster mit Konstruktor

MiMa

Top Contributor
Hallo,

ich erlerne gerade Java und habe auch schon das Thema mit Konstruktoren erfolgreich erarbeitet, aber mit einem Grafikfenster scheint es wohl etwas anders zu laufen.

Ich würde mich sehr freuen, wenn jemand eine Tipp für meinen Fehler hat.

Bei diesem code wird das Fenster korrekt angezeigt und funktionsfähigem Schließbutton.

Java:
public class Oberflaeche
{ 
// Programmstart
    public static void main(String[] args)
    {
    // Grafikfensterobjekt erzeugen
	Frame frameA = new Frame("Grafikfenster");
        
	frameA.setSize(1280,1024);
	frameA.setBounds(100,0,1280,1024);
	frameA.setVisible(true);
    // Methode zum schliessen des Fensters beim klicken des roten Buttons. 
    frameA.addWindowListener(new WindowClosingAdapter(true)); 
    }
}

Dann habe ich versucht einen Konstruktor ein zu bauen, für die Vorgabe des Fensters

Java:
public class Oberflaeche
{    
    // Konstruktor Parameter für Oberflaeche
    public Oberflaeche()
    {
        frameB.setSize(1280,1024);
        frameB.setBounds(100,0,1280,1024);
	    frameB.setVisible(true);
        // Methode zum schliessen des Fensters beim klicken des roten Buttons. 
        frameB.addWindowListener(new WindowClosingAdapter(true)); 
    }
    
    // Programmstart
    public static void main(String[] args)
    {
        // Grafikfensterobjekt erzeugen
	    Frame frameB = new Frame("Grafikfenster");
     }
}

Das zweite Beispiel funktioniert nicht. Der Fehler lautet, cant find Symbol. Symbol frameB.
Also kann wohl die Variable nicht finden.

Wenn ich das Richtig verstanden habe, dann fängt Java immer in der main Methode als Startpunkt an.
Dort soll ein Objekt erzeugt werden und benutzt dazu für die Initialisierung den Konstruktiv, wo die Werte liegen.

Demnach müsste die Reihenfolge die gleiche sein wie in Beispiel eins (frameA).

Ich freue mich über jeden Tipp.

Danke
Mi
 

Hutzli

Aktives Mitglied
Erzeuge mal in der main-Methode eine Instanz der Klasse Objekt, also:

Java:
Objekt o = new Objekt();
 

Hutzli

Aktives Mitglied
oder mach mal so
(sry, die Klass ist klein geschrieben, also falsch)

Klasse fenster

Java:
import java.awt.Dimension;

import javax.swing.JFrame;


public class fenster extends JFrame{

	
	fenster( )
	{
		this.add( new FensterPanel( ) );
		
		setLayout( );
	}
	
	private void setLayout( )
	{
		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		this.setTitle( "Test" );
		this.setVisible( true );
		this.setPreferredSize( new Dimension( 1280,1024 ) );
		this.pack( );
	}

	public static void main(String[] args) {
		
		new fenster( );

	}

}

Klasse FensterPanel
Java:
import javax.swing.JButton;
import javax.swing.JPanel;


public class FensterPanel extends JPanel{
	
	JButton bTest = new JButton( "Test" );
	
	FensterPanel( )
	{
		addButton( );
		new Action( bTest );
	}

	private void addButton() {
		
		this.add( bTest );
	}
}

Klasse Action
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;


public class Action implements ActionListener{
	
	JButton bTest;
	Action( JButton bTest)
	{
		this.bTest = bTest;
		bTest.addActionListener( this );
	}
	
	public void actionPerformed(ActionEvent e) {
		
		Object s = e.getSource( );
		
		if( s == bTest )
		{
			System.exit( 0 );
		}
	}

}

sollte funktionieren :)
 
Zuletzt bearbeitet:

MiMa

Top Contributor
Vielen Dank,

es hat jetzt geklappt.
Ich war zwar erst bei awt, um dort mit den Komponenten an zu fangen, aber ich sehe, das es mit dem Swing Modul JFrame viel einfacher und unkomplizierter geht.

Ich benötige mein WindowsClosingAdapter nicht mehr und die einzelnen Parameter sind ja echt übersichtlich zu definieren.

Also nochmals vielen Dank, hat mir super weiter geholfen.

Mi :toll:
 

theuserbl

Bekanntes Mitglied
Ich war zwar erst bei awt, um dort mit den Komponenten an zu fangen, aber ich sehe, das es mit dem Swing Modul JFrame viel einfacher und unkomplizierter geht.

Also was das Fenster öffnen angeht. unterscheiden sie sich nicht so sehr.

Hier mal das verbesserte Beispiel von Dir (AWT):

Java:
import java.awt.*;
import java.awt.event.*;
 
public class Oberflaeche extends Frame
{    
    // Konstruktor Parameter für Oberflaeche
    public Oberflaeche(String title)
    {
        super(title);
        setSize(1280,1024);
        setBounds(100,0,1280,1024);
        setVisible(true);
        // Methode zum schliessen des Fensters beim klicken des roten Buttons. 
        addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent we) {
            System.exit(0);
          }
        }); 
    }
    
    // Programmstart
    public static void main(String[] args)
    {
        // Grafikfensterobjekt erzeugen
        Oberflaeche frameB = new Oberflaeche("Grafikfenster");
     }
}

Und hier in Swing:

Java:
import javax.swing.*;
import java.awt.event.*;

public class Oberflaeche extends JFrame
{    
    // Konstruktor Parameter für Oberflaeche
    public Oberflaeche(String title)
    {
        super(title);
        setSize(1280,1024);
        setBounds(100,0,1280,1024);
        setVisible(true);
        // Methode zum schliessen des Fensters beim klicken des roten Buttons. 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    // Programmstart
    public static void main(String[] args)
    {
        // Grafikfensterobjekt erzeugen
        Oberflaeche frameB = new Oberflaeche("Grafikfenster");
     }
}
 
Zuletzt bearbeitet:

MiMa

Top Contributor
Vielen Dank, für die verbesserten Versionen.
So kann ich nun vergleichen, und sagen, das ich es fast genau so hin bekommen habe.

Vielen Dank

Mi
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben