Methoden JTExtField mit Array erzeugen

Guten Tag,
ich möchte für ein Menü dynamische Textfelder mit Hilfe eines Arrays erzeugen, in diese sollen später Koordinaten eingegeben werden können.
Code:
package test;

import javax.swing.JPanel;
import javax.swing.JTextField;

public class ArrayPanel extends JPanel {

   int a = 10;

   private JTextField[][] textField;

   public ArrayPanel(int a) {
       this.textField = new JTextField[a][2];

       for (int j = 0; j < 2; j++) {
           for (int i = 0; i < a; i++) {
               JTextField tf = new JTextField("" + i + "" + j);
               this.textField[i][j] = tf;
               this.add(tf);
           }
       }
   }

   public double[][] getValues() {
       return null;
   }
}
Die Textfelder sollen in die Oberfläche Swing eingebunden werden.
Das Problem das die Textfelder nur horizontal erzeugt werden.Sprich so
upload_2018-9-7_14-33-32.png
sie sollen aber in einer Tabelle mit 2 Spalen und n Zeilen eingetragen werden:
upload_2018-9-7_14-34-17.png
Eigentlich müsste es doch so klappen oder ?

Gruß Kai
 

Robat

Top Contributor
Du sagst ihm doch nirgendswo, dass die JTextFields in so einer tabellenartigen Weise angeordnet werden sollen. Woher soll Swing wissen, dass du das meinst ;)
Du musst schon einen LayoutManager dafür nutzen.
Beispielsweise ein GridLayout (wenn alle Elemente gleich hoch / breit sein sollen).
Dort kannst du im Konstruktor die Spalten und Zeilenanzahl angeben .. beispielsweise setLayout(new GridLayout(a, 2));
 
Danke für deine Antwort! Stimmt das habe ich ganz vergessen, das ganze soll in eine andere Klasse importiert (sagt man das so?) werden.
Java:
package test;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Surface extends JFrame implements ActionListener {

   int a = 10;
   int b = 2;
   private JButton generateB = new JButton("Generate");
   private JButton exitB = new JButton("Exit");
   String[] ComboBoxItems = { "2", "3", "4", "5", "6", "7", "8", "9", "10" };
   private JComboBox cb1 = new JComboBox(ComboBoxItems);

   public static void main(String[] args) {
       Surface p = new Surface();
       p.setVisible(true);
   }

   public Surface() {

       JPanel p1 = new JPanel(new BorderLayout());
       p1.setBorder(BorderFactory.createTitledBorder("Profil Abschnitte"));

       JPanel p2 = new JPanel(new GridLayout(1, 1));
       p2.add(new JLabel("Abschnitte = "));

       JPanel p3 = new JPanel(new GridLayout(1, 1));

       JPanel p4 = new JPanel(new BorderLayout());
       p4.setBorder(BorderFactory.createTitledBorder("Profil Koordinaten"));

       JPanel p6 = new JPanel(new GridLayout(a + 1, 2));

       JPanel p5 = new JPanel(new GridLayout(a + 1, 1));
       p5.add(new JLabel("Pn "));
       for (int i = 0; i < a; i++) {
           p5.add(new JLabel("P" + i));
       }

       p6.add(new JLabel(" X Koordinate"));
       p6.add(new JLabel(" Y Koordinate"));

       p6.add(new ArrayPanel(a));

       JPanel p7 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
       p7.setBorder(BorderFactory.createTitledBorder("Optionen"));
       p7.add(this.generateB);
       p7.add(this.exitB);

       p3.add(this.cb1);

       p1.add(p2, BorderLayout.WEST);
       p1.add(p3, BorderLayout.CENTER);

       p4.add(p5, BorderLayout.WEST);
       p4.add(p6, BorderLayout.CENTER);

       JPanel p0 = new JPanel(new BorderLayout());

       p0.add(p1, BorderLayout.NORTH);
       p0.add(p4, BorderLayout.WEST);
       p0.add(p7, BorderLayout.SOUTH);

       this.add(p0);

       this.setSize(600, 400);

       this.setDefaultCloseOperation(EXIT_ON_CLOSE);

       this.cb1.addActionListener(this);
       this.generateB.addActionListener(this);
       this.exitB.addActionListener(this);

   }

   public void actionPerformed(ActionEvent e) {
       if (e.getSource() == this.cb1) {
           JComboBox combo = (JComboBox) e.getSource();
           String ComboBoxItems = (String) combo.getSelectedItem();
           this.a = Integer.valueOf(ComboBoxItems);

           System.out.println("" + a);

       }

       if (e.getSource() == this.generateB) {
           System.out.println("Generate");
       }

       if (e.getSource() == this.exitB) {
           System.exit(0);
       }
   }
}
Die Textfelder sollen mit p6 eingefügt werden.
 

Robat

Top Contributor
1. Gib deinen Variablen bitte anständige Bezeichnungen. p1 sagt nichts über die Variable aus ;)
2. Der LayoutManager gehört auf den Container, in den die Komponenten liegen. Du fügst den LayoutManager gerade zu p6 hinzu, deine Komponenten liegen aber im JPanel ArrayPanel
 
Ok, die lieben Variablen :/.
Ok, ich glaube ich verstehe was du meinst, jetzt zerschießt java gerade mein ganzes Layout.

PS: Es gibt nicht zufällig hier im Forum jemanden der Auftragarbeiten durchführt ? :D
 
Ich habe nochmal eine Frage, ich würde gerne vor die Textfelder eine Zahl Pn zur besseren Übersicht schreiben. Das n soll vortlaufen sein, also von 0 bis n.
Kann ich dazu eine Methode in der ArrayPanel Methode erstellen oder eine eigene machen ?!
Wenn Ja wie füge ich diese zum Surface Container hinzu ?
Java:
package test;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class ArrayPanel extends JPanel {

   int a = 2;
   private JTextField[][] textField;

   private JLabel JLabel;

   public void RowNumber(int a) {
       for (int i = 0; i < a; i++) {
           JLabel rn = new JLabel("P" + i);
           this.JLabel = rn;
           this.add(rn);
       }
   }

   public ArrayPanel(int a) {

       this.a = a;

       this.textField = new JTextField[a][2];

       for (int j = 0; j < 2; j++) {
           for (int i = 0; i < a; i++) {
               JTextField tf = new JTextField("" + i + "" + j);
               this.textField[i][j] = tf;
               this.add(tf);
               // setLayout(new GridLayout(a, 2));
           }
       }
   }

   public double[][] getValues() {
       return null;
   }
}
 

Robat

Top Contributor
Immer wenn du ein Textfeld hinzufügst, fügst du einfach davor eine JLabel hinzu. Dann hast du aber auch keine 2 Spalten mehr sondern 4. (Eine Mögliche Lösung von vielen)
Java:
final int rows = 9;
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(rows, 4));

for(int i = 0; i < rows; i++) {
    for(int j = 0; j < 2; j++) {
        panel.add(new JLabel(i + "" + j));
        panel.add(new JTextField(2));
    }
}
 
Guten Abend,
sorry für die späte Antwort, danke für deine Hilfe, ich werde es probieren. Im Moment habe ich noch das Problem das dann vor jedem Kästchen eine Pn steht, dies soll eigentlich nur einmal pro Zeile passieren.
Aber das versuche ich noch !
Ich habe noch eine Verständnisfrage.
Die Klasse heißt ArrayPanel, und der Konstruktor natürlich auch. Diese binde ich auch in meine Hauptklasse ein, mit p6.add( new ArrayPanel(a));
Ist es möglich das ich noch eine Methode in der Klasse ArrayPanel schreibe,wie unten im Beispieltext, und diese alleine ohne die komplette Klasse ArrayPanel in meine Hauptklasse einbinde ?
Java:
package test;

import java.awt.*;

import javax.swing.*;

public class ArrayPanel extends JPanel {

   int a = 2;
   private JTextField[][] textField;

   private JLabel JLabel;

   /*
    * public void RowNumber(int a) { for (int i = 0; i < a; i++) { JLabel rn =
    * new JLabel("P" + i); this.JLabel = rn; this.add(rn); }
    */
   // }

   public ArrayPanel(int a) {

       this.a = a;
       this.add(new JLabel("X Koordinate"));
       this.add(new JLabel("Y Koordinate"));
       this.textField = new JTextField[a][2];

       for (int p = 0; p < a; p++) {
           JLabel rn = new JLabel("P" + p);
           this.JLabel = rn;
           this.add(rn);

       }
       for (int j = 0; j < 2; j++) {
           for (int i = 0; i < a; i++) {
               JTextField tf = new JTextField("i: " + i + " j: " + j);
               this.textField[i][j] = tf;
               this.add(tf);
               setLayout(new GridLayout(a + 1, 2));
           }
       }
   }

   public void Beispiel(int a){
       // Zum Beispiel um noch eine Feld oder anderes grafisches Objekt zu erzeugen ?
   }
   public double[][] getValues() {
       return null;
   }
}
 

Robat

Top Contributor
Ist es möglich das ich noch eine Methode in der Klasse ArrayPanel schreibe, [...], und diese alleine ohne die komplette Klasse ArrayPanel in meine Hauptklasse einbinde ?
Da versteh ich nicht ganz was du meinst. Wenn du eine Instanz deiner Klasse erzeugst, kannst du über diese Instanz auf alle Methoden des Objektes zugreifen.
Java:
ArrayPanel panel = new ArrayPanel(6);
add(panel);
panel.Beispiel(5);
m Moment habe ich noch das Problem das dann vor jedem Kästchen eine Pn steht
Dann musst du das JLabel eben in der äußeren for-Schleife hinzufügen :)
 
Danke für deine Antwort.
Ja ich denke das meinte ich, ich möchte halt nicht die komplette Instanz in meine Klasse einladen, sonder nur einen teil davon.
Das ist alles so kompliziert mit dem ganzen Methoden und Klassen kram.

Ja, danke das ich habe auch geschafft.
Ich werde es weiter versuchen.

Gruß Kai
 
Guten Morgen mihe7,
ich meinte wie ich die Methode "Beispiel" ausführen kann, ich habe rausgefunden das das mit
Java:
ArrayPanel.Beispiel(int a);

Gruß Kai
 

mihe7

Top Contributor
Auch das ist vermutlich nicht das, was Du haben willst, weil die Methode Beispiel nun static sein muss. Ohne konkreten Anwendungsfall kann man das jedoch nicht sicher beantworten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
G Problem mit JTextField-Array Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
S Möglichkeit, mit g.draw etwas vor ein JTextfield zu „zeichnen“? Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
B Variablen Int Variabel in JTextField ändern Java Basics - Anfänger-Themen 2
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E JButton und JTextField Java Basics - Anfänger-Themen 1
J JTextField Bezeichnung als Variable Java Basics - Anfänger-Themen 3
M Von einem JTextField Doublewerte entgegennehmen Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
G JTextField per Button speichern und an andere Klasse übergeben Java Basics - Anfänger-Themen 2
D Klassen JTextField wird nur zu 50% angezeigt. Java Basics - Anfänger-Themen 15
F JTextField Kursiv und Fett machen Java Basics - Anfänger-Themen 4
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
CptK Interface JTextField: Action mit Enter ausführen Java Basics - Anfänger-Themen 16
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
J Erste Schritte Wert aus JTextField zurückgeben Java Basics - Anfänger-Themen 6
F Aus einer anderen Klasse auf ein JTextField zugreifen Java Basics - Anfänger-Themen 17
P Cursor in JTextField setzen Java Basics - Anfänger-Themen 11
F Variablen JTextField-Inhalt kann nicht mit String abgeglichen werden Java Basics - Anfänger-Themen 2
F Interface JTextField am Anfang unsichtbar o_o Java Basics - Anfänger-Themen 3
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
K OOP Mit anderer Klasse auf JTextField zugreifen Java Basics - Anfänger-Themen 5
Liondary JTextfield Java Basics - Anfänger-Themen 8
W JTextField-Objekt liest Umlaute mit falschen Zeichen ein Java Basics - Anfänger-Themen 5
Z Fürge nur ein JTextField ein und danach wird nichts mehr angezeigt Java Basics - Anfänger-Themen 3
S JTextField zu ArrayList hinzufügen Java Basics - Anfänger-Themen 3
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
Z JTextField - getText() Methode abbrechen? Java Basics - Anfänger-Themen 8
P jTextField - Auslesen, in Variablen speichern, eingeben... Java Basics - Anfänger-Themen 7
J Methoden JTextArea auslesen und in JTextfield ausgeben Java Basics - Anfänger-Themen 13
M Double-Ausgabe in JTextField fehlerhaft Java Basics - Anfänger-Themen 2
U Inhalt von JTextfield an andere Klasse weitergeben Java Basics - Anfänger-Themen 13
I JTextfield[] innerhalb eines Itemlistener aufrufen Java Basics - Anfänger-Themen 2
S Verhalten von JTextField in einem JTabbedPane (Register) Java Basics - Anfänger-Themen 6
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
G JTextField, DocumentListener, Fehler bei setText() Java Basics - Anfänger-Themen 3
S Input/Output GUI Eingabe in JTextfield in Variable speichern Java Basics - Anfänger-Themen 7
C JTextField füllen Java Basics - Anfänger-Themen 5
C jtextfield und jtable Java Basics - Anfänger-Themen 34
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
K Encoding von JTextfield Java Basics - Anfänger-Themen 2
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
P Klassen JTextfield aus anderer Klasse herausfüllen Java Basics - Anfänger-Themen 12
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
M Datumsformat in JTextfield Java Basics - Anfänger-Themen 10
S JTextField nervt rum... Java Basics - Anfänger-Themen 4
B JTextField Java Basics - Anfänger-Themen 5
D Durch Button klick wert in JTextField einfügen Java Basics - Anfänger-Themen 5
J Verknüpfung von JButton to JTextField Java Basics - Anfänger-Themen 4
B JTextField Java Basics - Anfänger-Themen 5
C Problem mit JTextField Java Basics - Anfänger-Themen 8
A Klassen JTextField eigtl leer aber es werden Methoden ect. angezeigt Java Basics - Anfänger-Themen 9
L JTextField auslesen mit getText() wie abspeichern? Java Basics - Anfänger-Themen 2
D jtextField Ausgabe double Java Basics - Anfänger-Themen 4
D JTextField verwenden ohne Eingabe einer Variable Java Basics - Anfänger-Themen 4
J GUI - JTextField Anordnung Java Basics - Anfänger-Themen 2
S nur Buchstaben in JTextField Java Basics - Anfänger-Themen 3
S JTextfield Auswertung mit FocusListener Java Basics - Anfänger-Themen 7
M Hilfe JTextfield Ergebnis Java Basics - Anfänger-Themen 2
B GUI- JTextField - Übung Java Basics - Anfänger-Themen 5
M OOP Wie greife ich auf JTextField zu? Java Basics - Anfänger-Themen 2
P Eingabe aus JTextField/Area an eine andere Klasse übergeben. Java Basics - Anfänger-Themen 2
M Input/Output JFrame mit JButton und JTextfield Java Basics - Anfänger-Themen 114
F GUI JTextField aktualisieren Java Basics - Anfänger-Themen 3
B jTextField bei Enter eingabe absenden? Java Basics - Anfänger-Themen 2
S JTextField leeren ohne setText("")? Java Basics - Anfänger-Themen 3
A fire button on JTextField Enter Java Basics - Anfänger-Themen 2
G JTextField() Anzeige - if-Anweisungen Java Basics - Anfänger-Themen 2
R Erste Schritte codecopieren von Editor nach Eclipse / JTextField Java Basics - Anfänger-Themen 4
L Zeichen in jTextField markieren Java Basics - Anfänger-Themen 2
M Text auf JTextField auslesen per Button Java Basics - Anfänger-Themen 4
L JTextField getText() gibt immer null zurück Java Basics - Anfänger-Themen 10
L Null Pointer Exception bei Focus Event bei einem JTextField Java Basics - Anfänger-Themen 2
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
H Prüfen welches JTextfield ausgewählt/selektiert ist? Java Basics - Anfänger-Themen 7
B Input/Output jTextField - KeyEvent - Zeichen soll nicht erscheinen Java Basics - Anfänger-Themen 6
D JPasswordField - JTextField Java Basics - Anfänger-Themen 5
J JTextfield mit Enter leeren Java Basics - Anfänger-Themen 3
H JtextField auslesen und in JLable einfuegen Java Basics - Anfänger-Themen 7
D JTextField anstatt Jbuttons Java Basics - Anfänger-Themen 9
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
S mit eigener Klasse JTextField ändern Java Basics - Anfänger-Themen 3
M JTextField durch Button auslösen Java Basics - Anfänger-Themen 9
J JLabel mit Hilfe von JTextfield benennen Java Basics - Anfänger-Themen 7
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
M JTextField Java Basics - Anfänger-Themen 7
O JTextField Schriftgröße ändern Java Basics - Anfänger-Themen 1
J Nur ein Komma in JTextField zulassen... Java Basics - Anfänger-Themen 9
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
S JTextField an SQL mit -> Kommazahlen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben