diff --git a/Programmierung2/src/GUIAnwendungen/BewegePanle.java b/Programmierung2/src/GUIAnwendungen/BewegePanle.java new file mode 100644 index 0000000..3bb6c66 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/BewegePanle.java @@ -0,0 +1,58 @@ +package GUIAnwendungen; + +import java.awt.Color; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.Timer; + +public class BewegePanle extends JPanel { + private int yPosition = 0; // Startposition des Panels oben + private final int speed = 1; // Geschwindigkeit der Bewegung + private final int panelWidth = 100; + private final int panelHeight = 100; + + public BewegePanle() { + // Setze die Hintergrundfarbe des Panels + setBackground(Color.red); + + // Timer initialisieren und starten + //(int delay, ActionListener listener) + Timer timer = new Timer(10, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // Aktualisiere die y-Position + yPosition += speed; + + // Wenn das Panel unten angekommen ist, starte wieder von oben + if (yPosition > 750 - panelHeight) { + yPosition = 0; // Zurück an den oberen Rand + } + + // Erzwinge das Neuzeichnen des Panels + setBounds(0, yPosition, panelWidth, panelHeight); + } + }); + + timer.start(); // Timer starten + } + + public static void main(String[] args) { + // Erstelle das Hauptfenster + JFrame frame = new JFrame(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(750, 750); + frame.setLayout(null); // Deaktiviere das Layout-Management + + // Erstelle eine Instanz von Jpanel und füge sie dem Fenster hinzu + BewegePanle panel = new BewegePanle(); + panel.setBounds(0, 0, 100, 100); // Initiale Position und Größe + frame.add(panel); + + // Mache das Fenster sichtbar + frame.setVisible(true); + } + } + diff --git a/Programmierung2/src/GUIAnwendungen/GridBagLayoutExample.java b/Programmierung2/src/GUIAnwendungen/GridBagLayoutExample.java new file mode 100644 index 0000000..8e4a3d1 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/GridBagLayoutExample.java @@ -0,0 +1,31 @@ +package GUIAnwendungen; + +import javax.swing.*; +import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridLayout; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +public class GridBagLayoutExample { + /*- manuell positionien von Elementen + * - in viel flexibleres Layout-Manager, bei dem du die Position, + * Größe und Ausdehnung (über mehrere Zeilen/Spalten) der einzelnen Komponenten präzise steuern kannst. + * - Du kannst einzelne Komponenten unterschiedlich groß machen, sie über mehrere Zellen spannen und Abstände festlegen. + */ + public static void main(String[] args) { + JFrame frame = new JFrame("GridBagLayout Example"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setLayout(null); + JButton button1 = new JButton("Button1"); + frame.add(button1); + + button1.setBounds(0, 0, 120, 30); + frame.setSize(800, 800); + frame.setVisible(true); + } +} diff --git a/Programmierung2/src/GUIAnwendungen/Gridlayout.java b/Programmierung2/src/GUIAnwendungen/Gridlayout.java new file mode 100644 index 0000000..e13ef94 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Gridlayout.java @@ -0,0 +1,42 @@ +package GUIAnwendungen; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridLayout; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; + +public class Gridlayout { + + public static void main(String[] args) { + + // Erstelle ein JFrame-Fenster + JFrame fenster = new JFrame(); + + // Beendet das Programm beim Schließen des Fensters + fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Legt die Größe des Fensters auf 500x500 Pixel fest + fenster.setSize(500, 500); + fenster.setLayout(new GridLayout(4,3,10,4)); + + fenster.add(new JButton("1")); + fenster.add(new JButton("2")); + fenster.add(new JButton("3")); + fenster.add(new JButton("4")); + fenster.add(new JButton("5")); + fenster.add(new JButton("6")); + fenster.add(new JButton("7")); + fenster.add(new JButton("8")); + fenster.add(new JButton("9")); + + fenster.setVisible(true); + + + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Jpanel.java b/Programmierung2/src/GUIAnwendungen/Jpanel.java index da732cf..4d7e58a 100644 --- a/Programmierung2/src/GUIAnwendungen/Jpanel.java +++ b/Programmierung2/src/GUIAnwendungen/Jpanel.java @@ -17,10 +17,9 @@ public class Jpanel { JPanel panel = new JPanel(); panel.setBackground(Color.red); // setze eine Grafisches Bauelement (int x, int y, int width, int height) - panel.setBounds(0, 0, 24, 50); + panel.setBounds(100, 100, 10, 10); + - - // Erstelle ein Fenster JFrame frame = new JFrame(); //stellt sicher, dass keine automatische Positionierung und Größenanpassung erhalten @@ -37,6 +36,7 @@ public class Jpanel { frame.add(panel); + } -} +} \ No newline at end of file diff --git a/Programmierung2/src/GUIAnwendungen/KeyBindingsExample.java b/Programmierung2/src/GUIAnwendungen/KeyBindingsExample.java new file mode 100644 index 0000000..9cc9cdd --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/KeyBindingsExample.java @@ -0,0 +1,31 @@ +package GUIAnwendungen; + +import javax.swing.*; +import java.awt.event.ActionEvent; + +public class KeyBindingsExample extends JFrame { + public KeyBindingsExample() { + setTitle("KeyBindings Beispiel"); + setSize(300, 200); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Panel erstellen + JPanel panel = new JPanel(); + add(panel); + + // KeyBinding hinzufügen: 'A' Taste + panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("A"), "keyA"); + panel.getActionMap().put("keyA", new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + System.out.println("Taste 'A' wurde gedrückt (KeyBindings)."); + } + }); + + setVisible(true); + } + + public static void main(String[] args) { + new KeyBindingsExample(); + } +} diff --git a/Programmierung2/src/GUIAnwendungen/ShowMessage.java b/Programmierung2/src/GUIAnwendungen/ShowMessage.java new file mode 100644 index 0000000..d623bcd --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/ShowMessage.java @@ -0,0 +1,63 @@ +package GUIAnwendungen; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +public class ShowMessage { + + /* + * - erstellt einfache Dialogfenster (Pop-up-Fenster) + * - können verwendet werden, um Nachrichten anzuzeigen, Eingaben vom Benutzer zu erfassen oder den Benutzer vor bestimmten Aktionen zu warnen. + * - durch null kann man viele sachen ersetzen: + * . Fenster + * . Jpanel + * . public MeinFenster() { + super("Mein Fenster"); + JOptionPane.showMessageDialog(this, "Beispiel.", "Titel", JOptionPane.WARNING_MESSAGE); + + . etc... + } + */ + + public static void main(String[] args) { + // Erstelle ein JFrame-Fenster mit dem Titel "Mein Fenster" + JFrame fenster = new JFrame("Mein Fenster"); + + // Zeige eine Fehlermeldung in einem Dialog an, zentriert relativ zu 'fenster' + JOptionPane.showMessageDialog(fenster, "Beispiel.", "title", JOptionPane.ERROR_MESSAGE); + + // Zeige eine Informationsmeldung in einem Dialog an, zentriert auf dem Bildschirm + JOptionPane.showMessageDialog(null, "Beispiel..", "title", JOptionPane.INFORMATION_MESSAGE); + + // Zeige eine Frage in einem Dialog an, zentriert auf dem Bildschirm + JOptionPane.showMessageDialog(null, "Beispiel.", "title", JOptionPane.QUESTION_MESSAGE); + + // Zeige eine Warnung in einem Dialog an, zentriert auf dem Bildschirm + JOptionPane.showMessageDialog(null, "Beispiel.", "title", JOptionPane.WARNING_MESSAGE); + + /* + * Zeige einen Bestätigungsdialog an, um den Benutzer zu fragen, + * ob er fortfahren möchte (Ja/Nein/Abbrechen). + * Antwort wird in 'antwort' gespeichert. + */ + int antwort = JOptionPane.showConfirmDialog(null, "Möchten Sie fortfahren?"); + if (antwort == JOptionPane.YES_OPTION) { + // Benutzer hat 'Ja' gewählt + System.out.println("Benutzer hat 'Ja' gewählt."); + } else if (antwort == JOptionPane.NO_OPTION) { + // Benutzer hat 'Nein' gewählt + System.out.println("Benutzer hat 'Nein' gewählt."); + } else if (antwort == JOptionPane.CANCEL_OPTION) { + // Benutzer hat 'Abbrechen' gewählt + System.out.println("Benutzer hat 'Cancel' gewählt."); + } + + // Zeige einen Eingabedialog an, um den Benutzer nach seinem Namen zu fragen + String eingabe = JOptionPane.showInputDialog("Geben Sie Ihren Namen ein:"); + // Gib den eingegebenen Namen in der Konsole aus + System.out.println("Benutzername: " + eingabe); + } + } + + + diff --git a/Programmierung2/src/GUIAnwendungen/TextEingaben.java b/Programmierung2/src/GUIAnwendungen/TextEingaben.java new file mode 100644 index 0000000..e72c254 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/TextEingaben.java @@ -0,0 +1,58 @@ +package GUIAnwendungen; + +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JTextField; + +/*Beschreibung das Problem: + * Instanzvariablen sollten verwendet werden, wenn du sicherstellen möchtest, dass Variablen wie JButton und JTextField in der gesamten Klasse (und in actionPerformed) sichtbar sind. + Der Konstruktor der Klasse wird verwendet, um die GUI-Komponenten zu initialisieren und das Fenster aufzubauen. + Die main-Methode ist static und dient dazu, die Anwendung zu starten, indem sie eine Instanz der Klasse erstellt. + Anonyme innere Klassen sind eine praktische Möglichkeit, wenn du einfache Event-Handling-Logik direkt in der main-Methode implementieren möchtest, ohne eine zusätzliche Klasse oder Instanzmethoden zu erstellen. + * + */ + +public class TextEingaben extends JFrame implements ActionListener { + // Instanzvariablen + private JTextField textField; + private JButton button1; + + // Konstruktor + public TextEingaben() { + // Initialisiere das Textfeld und den Button + textField = new JTextField(); + textField.setPreferredSize(new Dimension(240, 40)); + + button1 = new JButton("Submit"); + button1.setPreferredSize(new Dimension(240, 40)); + button1.addActionListener(this); // `this` verweist auf das aktuelle Objekt der Klasse + + // Setze das Layout und füge die Komponenten hinzu + setLayout(new FlowLayout()); + add(textField); + add(button1); + + // Konfiguriere das JFrame + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setSize(500, 500); + setVisible(true); + } + + // Die Methode wird aufgerufen, wenn der Button gedrückt wird + @Override + public void actionPerformed(ActionEvent e) { + if (e.getSource() == button1) { + System.out.println("Hallo " + textField.getText()); + } + } + + public static void main(String[] args) { + // Erstelle eine Instanz der Klasse, wodurch der Konstruktor aufgerufen wird + new TextEingaben(); + } +} +