From e1eaf252de055497798aa1928876ee713b5c5f94 Mon Sep 17 00:00:00 2001 From: Sebastian Brosch Date: Sun, 9 Jun 2024 23:16:37 +0200 Subject: [PATCH] Vorlesung 15 / Aufgabe 1 --- VL15/Aufgabe01/Aufgabe01.java | 18 +++ VL15/Aufgabe01/Screenshot.java | 238 +++++++++++++++++++++++++++++++++ 2 files changed, 256 insertions(+) create mode 100644 VL15/Aufgabe01/Aufgabe01.java create mode 100644 VL15/Aufgabe01/Screenshot.java diff --git a/VL15/Aufgabe01/Aufgabe01.java b/VL15/Aufgabe01/Aufgabe01.java new file mode 100644 index 0000000..e743039 --- /dev/null +++ b/VL15/Aufgabe01/Aufgabe01.java @@ -0,0 +1,18 @@ +package VL15.Aufgabe01; + +import javax.swing.JFrame; + +/** + * Vorlesung 15 / Aufgabe 1 + * + * @author Sebastian Brosch + */ +public class Aufgabe01 { + public static void main(String[] args) { + Screenshot screenshot = new Screenshot("Screenshot"); + screenshot.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + screenshot.setSize(690, 390); + screenshot.setResizable(false); + screenshot.setVisible(true); + } +} diff --git a/VL15/Aufgabe01/Screenshot.java b/VL15/Aufgabe01/Screenshot.java new file mode 100644 index 0000000..83b7845 --- /dev/null +++ b/VL15/Aufgabe01/Screenshot.java @@ -0,0 +1,238 @@ +package VL15.Aufgabe01; + +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSeparator; +import javax.swing.JTabbedPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.SwingConstants; +import javax.swing.UIManager; +import java.awt.event.WindowListener; +import java.awt.Color; +import java.awt.Font; +import java.awt.Image; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +public class Screenshot extends JFrame { + Screenshot(String title) { + super(title); + + JTabbedPane tcMain = new JTabbedPane(); + JPanel pnlVerbindungssuche = new JPanel(); + pnlVerbindungssuche.setLayout(null); + JPanel pnlErweiterteSuche = new JPanel(); + tcMain.addTab("Verbindungssuche", pnlVerbindungssuche); + tcMain.addTab("Erweiterte Suche", pnlErweiterteSuche); + + JTextArea txtLanguageMenu = new JTextArea(); + txtLanguageMenu.setText("deutsch | english | francais | italiano"); + txtLanguageMenu.setBounds(480, 0, 200, 20); + this.getContentPane().add(txtLanguageMenu); + + insertHeading("Start & Ziel", pnlVerbindungssuche, 0); + JLabel lblStartZielVon = new JLabel(); + lblStartZielVon.setText("Von:"); + lblStartZielVon.setBounds(0, 25, 100, 25); + pnlVerbindungssuche.add(lblStartZielVon); + JLabel lblStartZielNach = new JLabel(); + lblStartZielNach.setText("Nach:"); + lblStartZielNach.setBounds(0, 50, 100, 25); + pnlVerbindungssuche.add(lblStartZielNach); + JLabel lblStartZielBahnhofHaltestelleVon = new JLabel(); + lblStartZielBahnhofHaltestelleVon.setText("Bahnhof/Haltestelle"); + lblStartZielBahnhofHaltestelleVon.setBounds(100, 25, 150, 25); + lblStartZielBahnhofHaltestelleVon.setFont(lblStartZielBahnhofHaltestelleVon.getFont().deriveFont(Font.PLAIN)); + pnlVerbindungssuche.add(lblStartZielBahnhofHaltestelleVon); + JLabel lblStartZielBahnhofHaltestelleNach = new JLabel(); + lblStartZielBahnhofHaltestelleNach.setText("Bahnhof/Haltestelle"); + lblStartZielBahnhofHaltestelleNach.setBounds(100, 50, 150, 25); + lblStartZielBahnhofHaltestelleNach.setFont(lblStartZielBahnhofHaltestelleNach.getFont().deriveFont(Font.PLAIN)); + pnlVerbindungssuche.add(lblStartZielBahnhofHaltestelleNach); + JTextField txtStartZielVon = new JTextField(); + txtStartZielVon.setBounds(250, 27, 300, 20); + txtStartZielVon.setBorder(BorderFactory.createLineBorder(Color.black)); + pnlVerbindungssuche.add(txtStartZielVon); + JTextField txtStartZielNach = new JTextField(); + txtStartZielNach.setBounds(250, 52, 300, 20); + txtStartZielNach.setBorder(BorderFactory.createLineBorder(Color.BLACK)); + pnlVerbindungssuche.add(txtStartZielNach); + + pnlVerbindungssuche.add(getInfoIcon(555, 27)); + + JButton btnStartZielUeber = new JButton(); + btnStartZielUeber.setText("Über"); + btnStartZielUeber.setBounds(555, 52, 65, 20); + pnlVerbindungssuche.add(btnStartZielUeber); + + insertHeading("Reisedatum und -zeit", pnlVerbindungssuche, 75); + JLabel lblReisedatumHinfahrt = new JLabel(); + lblReisedatumHinfahrt.setText("Hinfahrt:"); + lblReisedatumHinfahrt.setBounds(0, 100, 100, 25); + pnlVerbindungssuche.add(lblReisedatumHinfahrt); + JLabel lblReisedatumHinfahrtDatum = new JLabel(); + lblReisedatumHinfahrtDatum.setText("Datum:"); + lblReisedatumHinfahrtDatum.setBounds(100, 100, 75, 25); + lblReisedatumHinfahrtDatum.setFont(lblReisedatumHinfahrtDatum.getFont().deriveFont(Font.PLAIN)); + pnlVerbindungssuche.add(lblReisedatumHinfahrtDatum); + JLabel lblReisedatumHinfahrtUhrzeit = new JLabel(); + lblReisedatumHinfahrtUhrzeit.setText("Uhrzeit:"); + lblReisedatumHinfahrtUhrzeit.setBounds(100, 125, 50, 25); + lblReisedatumHinfahrtUhrzeit.setFont(lblReisedatumHinfahrtUhrzeit.getFont().deriveFont(Font.PLAIN)); + pnlVerbindungssuche.add(lblReisedatumHinfahrtUhrzeit); + JTextField txtReisedatumHinfahrtDatum = new JTextField(); + txtReisedatumHinfahrtDatum.setBounds(150, 102, 100, 20); + txtReisedatumHinfahrtDatum.setBorder(BorderFactory.createLineBorder(Color.black)); + pnlVerbindungssuche.add(txtReisedatumHinfahrtDatum); + JTextField txtReisedatumHinfahrtUhrzeit = new JTextField(); + txtReisedatumHinfahrtUhrzeit.setBounds(150, 127, 50, 20); + txtReisedatumHinfahrtUhrzeit.setBorder(BorderFactory.createLineBorder(Color.black)); + pnlVerbindungssuche.add(txtReisedatumHinfahrtUhrzeit); + String uhrzeitTypes[] = { "Ankunft", "Abfahrt" }; + JComboBox cmbReisedatumHinfahrtUhrzeitType = new JComboBox(uhrzeitTypes); + cmbReisedatumHinfahrtUhrzeitType.setBounds(205, 127, 100, 20); + pnlVerbindungssuche.add(cmbReisedatumHinfahrtUhrzeitType); + + JSeparator sepReisedatum = new JSeparator(SwingConstants.VERTICAL); + sepReisedatum.setBounds(315, 100, 1, 50); + sepReisedatum.setBackground(Color.LIGHT_GRAY); + pnlVerbindungssuche.add(sepReisedatum); + + JLabel lblReisedatumRueckfahrt = new JLabel(); + lblReisedatumRueckfahrt.setText("Rückfahrt:"); + lblReisedatumRueckfahrt.setBounds(325, 100, 100, 25); + pnlVerbindungssuche.add(lblReisedatumRueckfahrt); + JLabel lblReisedatumRueckfahrtDatum = new JLabel(); + lblReisedatumRueckfahrtDatum.setText("Datum:"); + lblReisedatumRueckfahrtDatum.setBounds(425, 100, 75, 25); + lblReisedatumRueckfahrtDatum.setFont(lblReisedatumRueckfahrtDatum.getFont().deriveFont(Font.PLAIN)); + pnlVerbindungssuche.add(lblReisedatumRueckfahrtDatum); + JLabel lblReisedatumRueckfahrtUhrzeit = new JLabel(); + lblReisedatumRueckfahrtUhrzeit.setText("Uhrzeit:"); + lblReisedatumRueckfahrtUhrzeit.setBounds(425, 125, 50, 25); + lblReisedatumRueckfahrtUhrzeit.setFont(lblReisedatumRueckfahrtUhrzeit.getFont().deriveFont(Font.PLAIN)); + pnlVerbindungssuche.add(lblReisedatumRueckfahrtUhrzeit); + JTextField txtReisedatumRueckfahrtDatum = new JTextField(); + txtReisedatumRueckfahrtDatum.setBounds(475, 102, 100, 20); + txtReisedatumRueckfahrtDatum.setBorder(BorderFactory.createLineBorder(Color.black)); + pnlVerbindungssuche.add(txtReisedatumRueckfahrtDatum); + JTextField txtReisedatumRueckfahrtUhrzeit = new JTextField(); + txtReisedatumRueckfahrtUhrzeit.setBounds(475, 127, 50, 20); + txtReisedatumRueckfahrtUhrzeit.setBorder(BorderFactory.createLineBorder(Color.black)); + pnlVerbindungssuche.add(txtReisedatumRueckfahrtUhrzeit); + JComboBox cmbReisedatumRueckfahrtUhrzeitType = new JComboBox(uhrzeitTypes); + cmbReisedatumRueckfahrtUhrzeitType.setBounds(530, 127, 100, 20); + pnlVerbindungssuche.add(cmbReisedatumRueckfahrtUhrzeitType); + + insertHeading("Angaben zur Preisberechnung", pnlVerbindungssuche, 150); + JLabel lblPreisberechnungReisende = new JLabel(); + lblPreisberechnungReisende.setText("Reisende:"); + lblPreisberechnungReisende.setBounds(0, 175, 100, 25); + pnlVerbindungssuche.add(lblPreisberechnungReisende); + String personType[] = { "1 Erwachsener", "2 Erwachsene" }; + JComboBox cmbPreisberechnungPersonType = new JComboBox(personType); + cmbPreisberechnungPersonType.setBounds(100, 177, 205, 20); + pnlVerbindungssuche.add(cmbPreisberechnungPersonType); + JButton btnPreisberechnungAdd = new JButton(); + btnPreisberechnungAdd.setText("Personen hinzufügen"); + btnPreisberechnungAdd.setBounds(100, 202, 160, 20); + pnlVerbindungssuche.add(btnPreisberechnungAdd); + pnlVerbindungssuche.add(getInfoIcon(265, 202)); + String rabattType[] = { "Keine Ermäßigung", "Bahn-Card 25", "Bahn-Card 50" }; + JComboBox cmbPreisberechnungRabattType = new JComboBox(rabattType); + cmbPreisberechnungRabattType.setBounds(315, 177, 210, 20); + pnlVerbindungssuche.add(cmbPreisberechnungRabattType); + JButton btnPreisberechnungAuslandspreise = new JButton(); + btnPreisberechnungAuslandspreise.setText("Auslandspreise"); + btnPreisberechnungAuslandspreise.setBounds(315, 202, 125, 20); + pnlVerbindungssuche.add(btnPreisberechnungAuslandspreise); + pnlVerbindungssuche.add(getInfoIcon(445, 202)); + String klasseType[] = { "1. Klasse", "2. Klasse" }; + JComboBox cmbPreisberechnungKlasse = new JComboBox(klasseType); + cmbPreisberechnungKlasse.setBounds(530, 177, 100, 20); + pnlVerbindungssuche.add(cmbPreisberechnungKlasse); + + insertHeading("Angaben zur Verbindung", pnlVerbindungssuche, 225); + JLabel lblVerbindungVerkehrsmittel = new JLabel(); + lblVerbindungVerkehrsmittel.setText("Verkehrsmittel:"); + lblVerbindungVerkehrsmittel.setBounds(0, 250, 100, 25); + pnlVerbindungssuche.add(lblVerbindungVerkehrsmittel); + String searchType[] = { "Standardsuche", "Erweiterte Suche" }; + JComboBox cmbVerbindungSucheType = new JComboBox(searchType); + cmbVerbindungSucheType.setBounds(100, 252, 205, 20); + pnlVerbindungssuche.add(cmbVerbindungSucheType); + JButton btnVerbindungAdvanced = new JButton(); + btnVerbindungAdvanced.setText("Erweitert"); + btnVerbindungAdvanced.setBounds(315, 252, 100, 20); + pnlVerbindungssuche.add(btnVerbindungAdvanced); + pnlVerbindungssuche.add(getInfoIcon(420, 252)); + JCheckBox chkVerbindungSchnelleVerbindung = new JCheckBox(); + chkVerbindungSchnelleVerbindung.setText("schnelle Verbindungen bevorzugen"); + chkVerbindungSchnelleVerbindung.setBounds(100, 277, 235, 20); + pnlVerbindungssuche.add(chkVerbindungSchnelleVerbindung); + pnlVerbindungssuche.add(getInfoIcon(335, 277)); + JCheckBox chkVerbindungFahrrad = new JCheckBox(); + chkVerbindungFahrrad.setText("Fahrradmitnahme"); + chkVerbindungFahrrad.setBounds(370, 277, 150, 20); + pnlVerbindungssuche.add(chkVerbindungFahrrad); + + JSeparator sepControls = new JSeparator(SwingConstants.HORIZONTAL); + sepControls.setBounds(0, 300, 670, 1); + sepControls.setBackground(Color.LIGHT_GRAY); + pnlVerbindungssuche.add(sepControls); + + JButton btnVerbindungSuchen = new JButton(); + btnVerbindungSuchen.setText("Verbindung suchen"); + btnVerbindungSuchen.setBounds(0, 305, 150, 20); + pnlVerbindungssuche.add(btnVerbindungSuchen); + JButton btnVerbindungNeueAnfrage = new JButton(); + btnVerbindungNeueAnfrage.setText("Neue Anfrage"); + btnVerbindungNeueAnfrage.setBounds(155, 305, 125, 20); + pnlVerbindungssuche.add(btnVerbindungNeueAnfrage); + JButton btnMeinAnfrageprofil = new JButton(); + btnMeinAnfrageprofil.setText("Mein Anfrageprofil"); + btnMeinAnfrageprofil.setBounds(520, 305, 150, 20); + pnlVerbindungssuche.add(btnMeinAnfrageprofil); + + this.getContentPane().add(tcMain); + + WindowListener closeListener = new WindowAdapter() { + public void windowClosing(WindowEvent event) { + System.exit(0); + } + }; + this.addWindowListener(closeListener); + } + + private void insertHeading(String title, JPanel panel, int top) { + JLabel lblStartZiel = new JLabel(); + lblStartZiel.setText(title); + lblStartZiel.setOpaque(true); + lblStartZiel.setBackground(Color.decode("#ceccfe")); + lblStartZiel.setForeground(Color.decode("#1b0897")); + lblStartZiel.setBounds(0, top, 670, 25); + panel.add(lblStartZiel); + } + + /** + * Get a JLabel with displaying the info icon. + * + * @param left The position on the x-axis. + * @param top The position on the y-axis. + * @return The label with info icon. + */ + private JLabel getInfoIcon(int left, int top) { + ImageIcon icon = (ImageIcon) UIManager.get("OptionPane.informationIcon"); + Image imgFit = icon.getImage().getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH); + JLabel lblInfoIcon = new JLabel(new ImageIcon(imgFit)); + lblInfoIcon.setBounds(left, top, 20, 20); + return lblInfoIcon; + } +}