Vorlesung 15 / Aufgabe 1

This commit is contained in:
Sebastian Brosch 2024-06-09 23:16:37 +02:00
parent b90a013f4c
commit e1eaf252de
2 changed files with 256 additions and 0 deletions

View File

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

View File

@ -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<String> cmbReisedatumHinfahrtUhrzeitType = new JComboBox<String>(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<String> cmbReisedatumRueckfahrtUhrzeitType = new JComboBox<String>(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<String> cmbPreisberechnungPersonType = new JComboBox<String>(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<String> cmbPreisberechnungRabattType = new JComboBox<String>(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<String> cmbPreisberechnungKlasse = new JComboBox<String>(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<String> cmbVerbindungSucheType = new JComboBox<String>(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;
}
}