import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Event extends JFrame implements ActionListener {
public static void main(String[] args) {
new Event();
}
private static final long serialVersionUID = -1850748664040288132L;
// immer sprechende Namen wählen (evtl den Typ der Variabel nutzen)
int anzahlMessreihen;
// Für die reine Anzahl der Messreihen ist ein JTextField absolut
// ausreichend!!
private JTextField jTfAnzahl = new JTextField(5);
private JButton jBok = new JButton("ok");
// Kurze Erklärung, was dort eingegeben soll schadet sicherlich nicht!
private JLabel jLAnzahlMessreihen = new JLabel(
"Bitte Anzahl der Messreihen eingeben:");
// die Komponenten für die Eingabe der x und y Koordinaten
private JTextField[] jTF_X;
private JTextField[] jTF_Y;
private JButton jBBerechnen;
// für eine etwas einfachere/übersichtliche Darstellung wird
// das 'panelEingabeXY_Koordinaten'-Panel wird erst nach eingabe der Anzahl
// der Messreihen initialisiert!
private JPanel panelAnzahlMessreihen = new JPanel(new FlowLayout());
private JPanel panelEingabeXY_Koordinaten;
public Event() {
setTitle("Anzahl Messreihen eingeben");
panelAnzahlMessreihen.add(jLAnzahlMessreihen);
panelAnzahlMessreihen.add(jTfAnzahl);
panelAnzahlMessreihen.add(jBok);
add(panelAnzahlMessreihen, BorderLayout.NORTH);
setSize(400, 600);
setLocationRelativeTo(null);
// NICHT VERGESSEN!!!!
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
jBok.addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == jBok) {
// Gleich mögliche Fehler abfangen und ausgeben
try {
anzahlMessreihen = Integer.parseInt(jTfAnzahl.getText());
initPanelEingabeXY_Koordinaten();
} catch (NumberFormatException nf) {
JOptionPane.showMessageDialog(this, "fehlerhafte Eingabe");
jTfAnzahl.setText("");
}
} else if (ae.getSource() == jBBerechnen) {
for (int i = 0; i < anzahlMessreihen; i++) {
// dann hier deine Berechnung, oder ein Aufruf auf deine
// BerechnungsMethode
System.out.println((i + 1) + ".X-Wert ist: "
+ jTF_X[i].getText() + " " + (i + 1)
+ ".Y-Wert ist: " + jTF_Y[i].getText());
}
}
}
private void initPanelEingabeXY_Koordinaten() {
// removen der Eingabemöglichkeit für die Anzahl der Messreihen
setTitle("X- und Y-Koordinaten eingeben");
remove(panelAnzahlMessreihen);
panelEingabeXY_Koordinaten = new JPanel(new GridLayout(
anzahlMessreihen, 4));
// zwei entsprechend der Eingabe große JTexfieldArray(s) erzeugen
jTF_X = new JTextField[anzahlMessreihen];
jTF_Y = new JTextField[anzahlMessreihen];
for (int i = 0; i < anzahlMessreihen; i++) {
// für x-Koordinate Label und Textfield erzeugen und dem Panel adden
JLabel label = new JLabel((i + 1) + ". X-Koordinate");
jTF_X[i] = new JTextField(2);
panelEingabeXY_Koordinaten.add(label);
panelEingabeXY_Koordinaten.add(jTF_X[i]);
// für Y-Koordinate Label und Textfield erzeugen und dem Panel adden
label = new JLabel((i + 1) + ". Y-Koordinate");
jTF_Y[i] = new JTextField(2);
panelEingabeXY_Koordinaten.add(label);
panelEingabeXY_Koordinaten.add(jTF_Y[i]);
}
// den neuen Button initialisieren und einen ActionListener hinzufügen
jBBerechnen = new JButton("Berechnen");
jBBerechnen.addActionListener(this);
// das ganze noch schnell in eine JScrollPane gepackt
JScrollPane jsp = new JScrollPane(panelEingabeXY_Koordinaten);
// ein bissel hübscheres "Outfit" für den Frame
setLayout(new BorderLayout());
// alles andere als schön...aber keine Lust mehr gehabt^^
if (anzahlMessreihen < 25) {
add(jsp, BorderLayout.NORTH);
} else if (anzahlMessreihen >= 25) {
add(jsp, BorderLayout.CENTER);
}
// auch kein schöner Code...aber wenn es hübsch macht :)
JPanel hilfsPanel = new JPanel();
hilfsPanel.add(jBBerechnen);
add(hilfsPanel, BorderLayout.SOUTH);
// validieren und repainten, sollte man allerdings sparsam mit umgehen
validate();
repaint();
}
}