kramann.info
© Guido Kramann

Login: Passwort:










Informatik3
1 Vom_struct_zur_Klasse
..1.1 Vom_struct_zur_Klasse
..1.2 struct_Programm
..1.3 Klassen_Programm
..1.4 Offene_Fragen
..1.5 Historie
..1.6 Objektabstraktion
..1.7 OO_Kundenverwaltung
..1.8 Objektfaehigkeiten
..1.9 Formatierung
..1.10 Motivation
..1.11 Uebung1
..1.12 Uebung2
2 UML
..2.1 Volumenberechnung
..2.2 UML_Klassendiagramm
..2.3 Konstruktor
..2.4 Statische_Variable
3 Strings
..3.1 Klassenbibliotheken
..3.2 stringUML
..3.3 Uebung3
4 Initialisierungen
4 bluej
5 Zeiger_und_Arrays
..5.1 Zeiger
..5.2 Zeiger_und_Funktion
..5.3 Uebung4
6 Vererbung
..6.1 MesswerteUML
..6.2 MesswerteProgramm
..6.3 VererbungsProgramm
..6.4 Vector
..6.5 Uebung
7 Modifikatoren
..7.1 public_Vererbung
..7.2 protected_Vererbung
8 Listen_und_Templates
..8.1 Containertypen
....8.1.1 ListeUML
....8.1.2 ListeProgramm
..8.2 Templates
....8.2.1 Listentemplate
....8.2.2 STLvectorTemplate
..8.3 Uebung5
..8.4 Uebung6
..8.5 Uebung7
9 Java
..9.1 Uebung
..9.2 GettingStarted
..9.3 Animation
..9.4 Hybrid
..9.5 Threads
10 Delegation
11 LayoutProjekt
12 Fenster
13 Uebung
14 Zwischenprojekt
..14.1 Befehle
..14.2 Planung
..14.3 JNI
..14.4 JNIumsetzen
..14.5 Anwendungsklasse
..14.6 GUI01
..14.7 GUI02
15 Rasterlayout
..15.1 Bilder_Packages
..15.2 interfaces
..15.3 ArrayList
..15.4 clone
..15.5 Uebung
16 Nuetzliches
..16.1 Threads
..16.2 Animation
..16.3 RungeKutta
..16.4 Loesungsansatz
..16.5 Internetprogrammierung
....16.5.1 Codegenerierung
....16.5.2 PHP_Programmierung
....16.5.3 PHP_OOP
....16.5.4 Java
17 Algorithmen
..17.1 RungeKutta
..17.2 Loesungsansatz
..17.3 Evoopt
..17.4 Uebung12
..17.5 Uebung8_2014
..17.6 Ausdruecke
18 Uebung10
19 UML_ALT
..19.1 Flaechenberechnung
..19.2 UML_Flaechenberechnung
..19.3 Implementierung
..19.4 ListeUML
..19.5 ListenImplementierung
..19.6 Anwendung

12 Welche Möglichkeiten bietet Java, ein Fenster zu erzeugen? - Sammlung von Techniken zum Layout-Projekt

12 What options does Java offer to create a window? - Collection of techniques for the layout proje (EN google-translate)

12 Jakie opcje Java oferuje, aby utworzyć okno? - Zbiór technik dla projektu ukła (PL google-translate)

Über die Java-Standard-Bibliotheken, stehen mindestens zwei möglichkeiten zur Verfügung ein Fenster zu erzeugen: Frame und JFrame. Da dies die Grundvoraussetzung zur Erzeugung von GUI-Anwendungen ist und dies auch notwendig zur Realisierung des Layout-Projekts ist und die bestehenden Möglichkeiten zu Beginn etwas verwirren können, werden diese hier in konzentrierter, einfacher Weise dargestellt:

There are at least two options available through the Java standard libraries create a window: Frame and JFrame. As this is the basic requirement f Generation of GUI applications is and this is also necessary for the realization of the Layout project and can confuse the existing possibilities at the beginning, these are presented here in a concentrated, simple way:

Istnieją co najmniej dwie opcje dostępne w standardowych bibliotekach Java utwórz okno: Frame i JFrame. Ponieważ jest to podstawowy wymóg d Generowanie aplikacji GUI jest i jest to również niezbędne do realizacji Projekt układu i istniejące możliwości mogą być mylące na samym początku, są one przedstawione tutaj w skoncentrowany, prosty sposób:

Fenster in der main-Methode erzeugen

Create windows in the main method

Utwórz okna w głównej metodzie

Die einfachste Möglichkeit besteht darin, ein Fenster direkt durch einen Aufruf in der main-Methode zu erzeugen.

The easiest way is to open a window directly through a call in to create the main method.

Najprostszym sposobem jest otwarcie okna bezpośrednio przez wywołanie stworzyć główną metodę.

  • Ein Fenster ist ein Objekt. Folglich wird ein entsprechender Konstruktor aufgerufen.
  • Titel und Größe des Fensters müssen estgelegt werden.
  • Der Titel wird über einen Übergabeparameter des Konstruktors festgelegt.
  • Position und Größe des Fensters werden mit Hilfe der Methode setBounds(...) gesetzt.
  • Um das Schließen des Fensters über das Anklicken des "X" durchführen zu können, wird die so geannte Default-Close-Operation gesetzt.
//Codebeispiel wird innerhalb der Vorlesung entwickelt und danach an dieser Stelle ergänzt
import javax.swing.JFrame;

public class Hauptklasse
{
    public static void main(String[] args)
    {
        JFrame fenster = new JFrame("Mein Fenster");
        fenster.setBounds(100,200,500,400);
//Verwendung der statischen Variable EXIT_ON_CLOSE:
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setVisible(true);
    }
}

Code 12-1: Hauptklasse.java

Fenster durch eine Klasse, die von Fenster erbt erzeugen

Create windows through a class inheriting from windows

Twórz okna przez klasę dziedziczącą po oknach

Wenn man von der Fenster-Klasse (JFrame) erbt, hat man die Möglichkeit, einen eigenen Konstruktor zu schreiben, der z.B. Titel, Position und Größe setzt. Auf diese Weise wird die Benutzung dieser Klasse einfacher. Zudem macht es logisch Sinn, dass Fenster als übergeordnete Klasse erscheint "in der" andere Elemente enthalten sind.

If you inherit from the window class (JFrame), you have the option of creating your own constructor to write, which is e.g. Title, position and size set This makes using this class easier. Moreover, it makes sense logically that window appears as a superclass in

Jeśli dziedziczysz z klasy okna (JFrame), masz możliwość utworzenia własnego konstruktora pisać, co jest np. Zestawy tytułów, pozycji i wielkośc To sprawia, że ​​korzystanie z tej klasy jest łatwiejsze. Ponadto logiczne jest, że okno pojawia się jako superklasa w

//Codebeispiel wird innerhalb der Vorlesung entwickelt und danach an dieser Stelle ergänzt
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Container;

public class FensterErben extends JFrame
{
    public FensterErben()
    {
        super("Mein Fenster"); //Aufruf des Konstruktors der Basisklasse
        //Hier Unsinn: JFrame fenster = new JFrame("Mein Fenster");
        //Alternativ: setTitle("Mein Fenster");
        //..oder so: this.setTitle("Mein Fenster");


        setBounds(100,200,500,400);
//Verwendung der statischen Variable EXIT_ON_CLOSE:
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);        

        //oder so:         
//        this.setBounds(100,200,500,400);
//Verwendung der statischen Variable EXIT_ON_CLOSE:
//        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        this.setVisible(true);        
    }

    public static void main(String[] args)
    {
        FensterErben fenster = new FensterErben();
        //Funktioniert nicht: fenster.setBackground(new Color(127,127,255));

//        fenster.getContentPane().setBackground(new Color(127,127,255));
//oder so:
        Container pane = fenster.getContentPane();
        pane.setBackground(new Color(127,127,255));
    }
}

Code 12-2: FensterErben.java

Fenster in einer fremden Hauptklasse erzeugen

Create windows in a foreign main class

Twórz okna w zagranicznej klasie głównej

Eine auf den ersten Blick etwas abwegigere aber bei zweitem Hinsehen auch sinnvolle Möglichkeit ist es, ein Fenster im Konstruktor einer völlig anderen Klasse zu erzeugen. Da Lauscher die Schnittstelle ActionListener implementieren muß, um auf Knopfdrücke reagieren zu können, muß diese Klasse in jedem Fall selber geschrieben werden. Alle anderen Klassen können in ihrer Standardversion (ohne Vererbung) benutzt werden.

A bit off the beaten track, but at second glance it makes sense is to create a window in the constructor of a completely different class. Since Lauscher must implement the ActionListener interface to be able to respond to button presses, this class must be written in any case. All other classes can be used in their standard version (without inheritance).

Trochę na uboczu, ale na pierwszy rzut oka ma to sens jest utworzenie okna w konstruktorze zupełnie innej klasy. Ponieważ Lauscher musi implementować interfejs ActionListener, aby móc reagować na naciśnięcia przycisków, ta klasa musi być napisana w każdym przypadku. Wszystkie pozostałe klasy mogą być używane w ich standardowej wersji (bez dziedziczenia).

//Codebeispiel wird innerhalb der Vorlesung entwickelt und danach an dieser Stelle ergänzt

Code 12-3: Lauscher.java

"Long Version" zu Knopf

Long

Długie

Das nachfolgende Programm setzt die gleiche Funktionalität um wie das vorhergehende, bneutzt aber zwei selbst geschriebene Klassen. Das macht die Programmstruktur zumindest für den Einstieg übersichtlicher.

The following program implements the same functionality as the previous one, but uses two self-written classes. That's what the program structure do at least for the entry clearer.

Poniższy program implementuje tę samą funkcjonalność co poprzednia, ale używa dwóch samodzielnie napisanych klas. Tak właśnie działa struktura progra przynajmniej dla wyraźniejszego wpisu.

//Codebeispiel wird innerhalb der Vorlesung entwickelt und danach an dieser Stelle ergänzt
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Container;

public class FensterErben extends JFrame
{
    public FensterErben()
    {
        super("Mein Fenster"); //Aufruf des Konstruktors der Basisklasse
        //Hier Unsinn: JFrame fenster = new JFrame("Mein Fenster");
        //Alternativ: setTitle("Mein Fenster");
        //..oder so: this.setTitle("Mein Fenster");


        setBounds(100,200,500,400);
//Verwendung der statischen Variable EXIT_ON_CLOSE:
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);        

        //oder so:         
//        this.setBounds(100,200,500,400);
//Verwendung der statischen Variable EXIT_ON_CLOSE:
//        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        this.setVisible(true);        
    }
}

Code 12-4: Fenster.java

//Codebeispiel wird innerhalb der Vorlesung entwickelt und danach an dieser Stelle ergänzt
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Lauscher implements ActionListener
{
    JButton knopf;

    public Lauscher(JButton knopf)
    {
        this.knopf = knopf; //Verfügbarmachen des Knopfes durch "Registrieren"
    }

    public void actionPerformed(ActionEvent e)
    {
        knopf.setText("gedrückt");    
    }

    public static void main(String[] args)
    {
        FensterErben fenster = new FensterErben();
        //Funktioniert nicht: fenster.setBackground(new Color(127,127,255));

//        fenster.getContentPane().setBackground(new Color(127,127,255));
//oder so:
        Container pane = fenster.getContentPane();
        pane.setBackground(new Color(127,127,255));

        fenster.setLayout(null);

        JButton knopf = new JButton("Benjamin");
        Lauscher lauscher = new Lauscher(knopf);
        knopf.addActionListener(lauscher); //Registrieren des Lauschers beim Knopf,
        //damit jedesmal, wenn der Knopf gedrückt wird, die Methode
        //actionPerformed() aufgerufen wird.

        fenster.getContentPane().add(knopf);

        knopf.setBounds(10,10,200,30);
    }
}

Code 12-5: Lauscher.java