Yo Leute!
Kennt sich hier einer ein wenig mit Java aus? Bin da ziemlich neu mit und habe innerhalb einer Woche mal die Basics davon gelernt (Alles außer den Pointer-Kram halt), weil Java von der Syntax her eben einige Gemeinsamkeiten mit C hat.
Nun aber brummt man mir im Praktikum direkt "objektorientiertes Programmieren" auf (so weit bin ich nicht mal bei C) und verlangt von mir eine GUI in Form eines Anmeldeformulars zu erstellen.
War alles eig recht easy, jedoch hänge ich jetzt bei den JComboBoxen fest und raffe nicht wie ich denen richtig Werte übergeben kann.
Im Internet finde ich nichts konkretes und die Lösungswege unterscheiden sich stetig.
Klar. Sicherlich könnte ich es auch so machen:
cmb_tag = new JComboBox();cmb_tag.setModel(new DefaultComboBoxModel(new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"}));cmb_tag.setBounds(108, 98, 49, 20);contentPane.add(cmb_tag);cmb_monat = new JComboBox();cmb_monat.setModel(new DefaultComboBoxModel(new String[] {"Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September ", "Oktober ", "November", "Dezember"}));cmb_monat.setBounds(161, 98, 98, 22);contentPane.add(cmb_monat);
Doch das halte ich nicht für wirklich sinnvoll, weil ich dann für "cmb_jahr" über 100 Zahlen hintereinander niederschreiben muss, um der ComboBox die Werte zuzuweisen. War schon bei "cmb_tag" mit 31 Werten ätzend.
Wie krieg ich es hin, dass ganze innerhalb einer Schleife zu machen?
Hier btw mein kompletter Code:
import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JComboBox;import javax.swing.JLabel;import com.jgoodies.forms.factories.DefaultComponentFactory;import java.awt.ItemSelectable;import java.awt.TextField;import java.awt.Font;import java.awt.Choice;import java.awt.Button;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import javax.swing.JTextPane;import java.awt.Panel;import javax.swing.JTextField;import javax.swing.JTextArea;import javax.swing.DefaultComboBoxModel;public class GUI extends JFrame {private JPanel contentPane;private JTextField text_passwort;private JTextField text_plz;private JTextField text_telefon;private JTextField text_mail;private JButton btn_OK;private JButton btn_cancel;private JButton btn_clear;private JTextField text_name;private JTextField text_vorname;private JTextPane textPane;private JTextField text_strasse;private JTextField text_ort;private JTextField text_hausnummer;private JComboBox cmd_tag;private JComboBox cmd_monat;private JComboBox cmd_jahr;private JComboBox cmb_monat;private JComboBox cmb_tag;private JComboBox cmb_jahr;public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {GUI frame = new GUI();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}public GUI() {ButtonListener bl = new ButtonListener(this);setTitle("ANMELDEFORMULAR");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 558, 468);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);JLabel lblNewJgoodiesTitle = DefaultComponentFactory.getInstance().createTitle("Name:");lblNewJgoodiesTitle.setFont(new Font("Tahoma", Font.PLAIN, 15));lblNewJgoodiesTitle.setBounds(10, 20, 88, 22);contentPane.add(lblNewJgoodiesTitle);JLabel lblVorname = DefaultComponentFactory.getInstance().createTitle("Vorname:");lblVorname.setFont(new Font("Tahoma", Font.PLAIN, 15));lblVorname.setBounds(10, 45, 88, 22);contentPane.add(lblVorname);JLabel lblWohnort = DefaultComponentFactory.getInstance().createTitle("Wohnort:");lblWohnort.setFont(new Font("Tahoma", Font.PLAIN, 15));lblWohnort.setBounds(10, 120, 88, 22);contentPane.add(lblWohnort);JLabel lblStrae = DefaultComponentFactory.getInstance().createTitle("Stra\u00DFe:");lblStrae.setFont(new Font("Tahoma", Font.PLAIN, 15));lblStrae.setBounds(10, 145, 63, 22);contentPane.add(lblStrae);JLabel lblGeburtstag = DefaultComponentFactory.getInstance().createTitle("Geburtstag:");lblGeburtstag.setFont(new Font("Tahoma", Font.PLAIN, 15));lblGeburtstag.setBounds(10, 95, 88, 22);contentPane.add(lblGeburtstag);textPane = new JTextPane();textPane.setEditable(true);textPane.setBounds(10, 253, 522, 132);contentPane.add(textPane);JLabel lblTelefonnummer = DefaultComponentFactory.getInstance().createTitle("Telefonnummer:");lblTelefonnummer.setFont(new Font("Tahoma", Font.PLAIN, 15));lblTelefonnummer.setBounds(10, 220, 119, 22);contentPane.add(lblTelefonnummer);JLabel lblPlz = DefaultComponentFactory.getInstance().createTitle("PLZ:");lblPlz.setFont(new Font("Tahoma", Font.PLAIN, 15));lblPlz.setBounds(10, 195, 88, 14);contentPane.add(lblPlz);text_passwort = new JTextField();text_passwort.setColumns(10);text_passwort.setBounds(123, 70, 98, 20);contentPane.add(text_passwort);JLabel lblPasswort = DefaultComponentFactory.getInstance().createTitle("Passwort:");lblPasswort.setFont(new Font("Tahoma", Font.PLAIN, 15));lblPasswort.setBounds(10, 70, 88, 22);contentPane.add(lblPasswort);//////////////////////////////////////////////////////////////////////////////// - BUTTONSbtn_OK = new JButton("OK");btn_OK.setActionCommand(ConfigStrings.ok_String);btn_OK.setBounds(204, 396, 89, 23);contentPane.add(btn_OK);btn_OK.addActionListener(bl);btn_cancel = new JButton("CANCEL");btn_cancel.setActionCommand(ConfigStrings.cancel_String);btn_cancel.setBounds(303, 396, 89, 23);contentPane.add(btn_cancel);btn_cancel.addActionListener(bl);btn_clear = new JButton("CLEAR");btn_clear.setActionCommand(ConfigStrings.clear_String);btn_clear.setBounds(105, 396, 89, 23);contentPane.add(btn_clear);btn_clear.addActionListener(bl);////////////////////////////////////////////////////////////////////////text_plz = new JTextField();text_plz.setBounds(123, 195, 98, 20);contentPane.add(text_plz);text_plz.setColumns(10);text_telefon = new JTextField();text_telefon.setBounds(123, 220, 98, 20);contentPane.add(text_telefon);text_telefon.setColumns(10);text_mail = new JTextField();text_mail.setBounds(123, 170, 98, 20);contentPane.add(text_mail);text_mail.setColumns(10);JLabel lblEmail = new JLabel("E-Mail:");lblEmail.setFont(new Font("Tahoma", Font.PLAIN, 15));lblEmail.setBounds(10, 170, 46, 22);contentPane.add(lblEmail);text_strasse = new JTextField();text_strasse.setBounds(123, 145, 98, 20);contentPane.add(text_strasse);text_strasse.setColumns(10);text_ort = new JTextField();text_ort.setBounds(123, 120, 98, 20);contentPane.add(text_ort);text_ort.setColumns(10);text_name = new JTextField();text_name.setBounds(123, 20, 98, 22);contentPane.add(text_name);text_name.addActionListener(bl);text_vorname = new JTextField();text_vorname.setBounds(123, 45, 98, 22);contentPane.add(text_vorname);text_vorname.addActionListener(bl);JTextArea textArea = new JTextArea();textArea.setBounds(94, 296, 4, 22);contentPane.add(textArea);text_hausnummer = new JTextField();text_hausnummer.setBounds(225, 145, 98, 20);contentPane.add(text_hausnummer);text_hausnummer.setColumns(10);////////////////////////////////////////////////// - ComboBoxencmb_tag = new JComboBox();cmb_tag.setBounds(108, 98, 49, 20);contentPane.add(cmb_tag);cmb_monat = new JComboBox();cmb_monat.setBounds(161, 98, 98, 22);contentPane.add(cmb_monat);cmb_jahr = new JComboBox();cmb_jahr.setBounds(262, 99, 73, 19);contentPane.add(cmb_jahr);///////////////////////////////////////////////////}public JTextField getText_Name(){return this.text_name;}public JTextField getText_Vorname(){return this.text_vorname;}public JTextField getText_Passwort(){return this.text_passwort;}public JTextField getText_Wohnort(){return this.text_ort;}public JTextField getText_PLZ(){return this.text_plz;}public JTextField getText_Strasse(){return this.text_strasse;}public JTextField getText_Hausnummer(){return this.text_hausnummer;}public JTextPane getTextPane(){return this.textPane;}}
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;public class ButtonListener implements ActionListener{private GUI gui;public ButtonListener(GUI gui){this.gui = gui;}@Overridepublic void actionPerformed(ActionEvent e){String ActionCommand=e.getActionCommand();switch(ActionCommand){case ConfigStrings.ok_String://System.out.println("OK-Button wurde gedückt");String text_name= this.gui.getText_Name().getText();String text_vorname = this.gui.getText_Vorname().getText();String text_plz = this.gui.getText_PLZ().getText();String text_ort = this.gui.getText_Wohnort().getText();String text_strasse = this.gui.getText_Strasse().getText();String text_hausnummer = this.gui.getText_Hausnummer().getText();this.gui.getTextPane().setText(text_name+","+text_vorname); //Unfertigbreak;case ConfigStrings.cancel_String://System.out.println("CANCEL-Button wurde gedrückt");System.exit(0);break;case ConfigStrings.clear_String:System.out.println("CLEAR-Button wurde gedrückt");this.gui.getTextPane().setText("");this.gui.getText_Name().setText(""); // Clear-Funktion auf andere Textfelder folgt nochbreak;}}}
^Vollkommen unnötig. Ich weiß. War aber nur eine kleine Spielerei, weil man mir gesagt hat in Java gäbe es kein #DEFINE wie in C.
Das ganze hat den selben Effekt, ist aber etwas umständlicher.