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