master
obaya 2024-08-13 22:56:26 +02:00
parent 16a83eafd6
commit f8e9ae46b5
7 changed files with 287 additions and 4 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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();
}
}

View File

@ -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);
}
}

View File

@ -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();
}
}