Textfelder sind gleich null

AmsananKING

Mitglied
Ich arbeite schon seit längerem an einem Bluej Projekt. In diesem Projekt habe ich die Klasse Anmeldung eingebaut, doch leider kann ich aus den Textfeldern auf Knopfdruck keine Daten abfragen.
Könnte mir jemand bitte helfen?
Mit freundlichen Grüßen Amsanan
[CODE lang="java" title="Gui.class"]
/**
* Beschreiben Sie hier die Klasse Gui.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.net.URL;
public class Gui extends JFrame implements ActionListener
{ Var var =new Var();
static CardLayout cl=new CardLayout();
Menue menue =new Menue();
Anmeldung anmeld=new Anmeldung();
static JPanel rootPanel=new JPanel();
JButton Play =new JButton();
JButton Options =new JButton();
JButton Exit =new JButton();

public Gui(){
setTitle("Pong");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(var.getWidth(),var.getHeight());
setLocationRelativeTo(null);
add(rootPanel());
setVisible(true);
}

public JPanel rootPanel(){
rootPanel.setPreferredSize(new Dimension(var.getWidth(),
var.getHeight()));
rootPanel.setLayout(cl);
rootPanel.add(menue,"menue");
rootPanel.add(anmeld,"anmeldung");
cl.show(rootPanel,"menue");
return rootPanel;
}

public void actionPerformed(ActionEvent e){
if(e.getSource().toString().contains("Play"))
{System.out.println("Play");
cl.show(rootPanel,"anmeldung");
}
if(e.getSource().toString().contains("Exit"))
{System.out.println("Exit");
System.exit(0);}
if(e.getSource().toString().contains("Options"))
{System.out.println("Options");
}

}

public static void change(JPanel pPanel,String pName){
rootPanel.add(pPanel,pName);
cl.show(rootPanel,pName);
}
private class Menue extends JPanel{

public Menue(){
setSize(var.getWidth(),var.getHeight());
setLayout(null);
setBackground(Color.BLACK);
for(JButton b:buttons()){
add(b);

}
add(titel());
}

public JButton button(String pText,int pX,int pY){
JButton temp =new JButton();
temp.setText(pText);
temp.setBounds(pX,pY,150,40);
Font font =new Font("Tahoma",Font.PLAIN,24);
temp.setFont(font);
return temp;
}

public JButton[] buttons(){
JButton[] buttons;
Play=button("Play",300,200);
Options=button("Options",300,300);
Exit=button("Exit",300,400);
buttons=new JButton[]{Play,Options,Exit};

for(JButton j:buttons){
j.addActionListener(Gui.this);
}
return buttons;
}

private JLabel titel(){
JLabel titel =new JLabel();
URL url =this.getClass().getResource("titel.gif");
ImageIcon icon =new ImageIcon(url);
titel.setIcon(icon);
titel.setBounds(200,10,300,100);
return titel;
}
}
}
[/CODE]
[CODE lang="java" title="Anmeldung.class" highlight="148-153,119-129"]import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Anmeldung extends JPanel implements ActionListener
{ private static String[] names={"Anmeldung","Anrede","Player1","Player2","Vorname","Nachname","Gamenr"};
private static String[] anred={"m","w","d"};
static JLabel temp2;
Var var=new Var();
private Gui gui;
static GamePanel gpanel =new GamePanel();
List<Players> Playerlist =new List<Players>();
public Anmeldung(){
setLayout(null);
setSize(var.getWidth(),var.getHeight());
setBackground(Color.BLACK);
test();
}

public JLabel[] labels(){
JLabel[] labels=new JLabel[names.length];

for(int i=0;i<names.length;i++){
if(names!="Submit"){
labels=new JLabel(names);
}

}

return labels;

}

public JLabel[] labels2(){
JLabel[] labels2=new JLabel[labels().length];
for (int i=0;i<labels().length;i++){
if(labels().getText()=="Anmeldung"){
labels2=labelsset(labels().getText(),300,10,200,30);
}
if(labels().getText().contains("Player")){
if(labels().getText().contains("1")){
labels2=labelsset(labels().getText(),100,150,100,20);

}
if(labels().getText().contains("2")){
labels2=labelsset(labels().getText(),100,190,100,20);

}
}
if(labels().getText().contains("name")){
if(labels().getText().contains("Vor")){
labels2=labelsset(labels().getText(),300,100,100,20);

}
if(labels().getText().contains("Nach")){
labels2=labelsset(labels().getText(),400,100,200,20);

}
}
if(labels().getText().contains("Anrede")){
labels2=labelsset(labels().getText(),200,100,100,20);
}
}
return labels2;
}

private JLabel labelsset(String pText,int pX,int pY,int pWidth,int pGr){
JLabel temp =new JLabel(pText,JLabel.CENTER);
temp.setBounds(pX,pY,pWidth, pGr+10);
Font font=new Font("Tahoma",Font.PLAIN,pGr);

temp.setFont(font);
temp.setBorder(BorderFactory.createLineBorder(Color.black));
temp.setForeground(Color.WHITE);
return temp;
}

public JComboBox[] cbox(){
int x=225;
JComboBox[] cbox=new JComboBox[2];
cbox[0]=combobox("Player1",x,150,50,20,anred);
cbox[1]=combobox("Player2",x,190,50,20,anred);

return cbox;
}

public void test(){
for(int i=0;i<labels2().length;i++)
if(labels2()!=null){
add(labels2());
}
for(int i=0;i<cbox().length;i++){
add(cbox());
}
for(int i=0;i<textfields().length;i++){
add(textfields());
}
add(button());
}

private JComboBox combobox(String pName,int pX,int pY,int pWidth,int pGr,String [] pRay){
JComboBox cbox=new JComboBox(pRay);
cbox.setName(pName);
cbox.setBounds(pX,pY,pWidth,pGr+10);
Font font =new Font("Tahoma",Font.PLAIN,pGr);
cbox.setFont(font);
return cbox;
}

private JTextField tfield(String pName,int pX,int pY,int pWidth,int pGr){
JTextField field =new JTextField();
field.setName(pName);
field.setBounds(pX,pY,pWidth,pGr+10);
Font font =new Font("Tahoma",Font.PLAIN,pGr);
field.setFont(font);
return field;
}

public JTextField[] textfields(){
JTextField[] textfields=new JTextField[4];

int g=15;
JTextField vorname1=tfield("PlayerV1",300,150,100,g);
JTextField nachname1=tfield("PlayerN1",425,150,200,g);
JTextField vorname2=tfield("PlayerV2",300,190,100,g);
JTextField nachname2=tfield("PlayerN2",425,190,200,g);
textfields=new JTextField[]{vorname1,nachname1,vorname2,nachname2};
return textfields;
}

public JButton button(){
JButton button =new JButton("Submit");

Font font =new Font("Tahoma",Font.PLAIN,25);
button.setFont(font);
button.setBounds(300,500,200,30);
button.addActionListener(this);

return button;
}

public void anmeldung(){
int rand =(int) (Math.random()*10);
String var =textfields()[0].getText();
System.out.println(var);
}

public void actionPerformed(ActionEvent e){
if(e.getSource().toString().contains("Submit")){
anmeldung();
//Gui.change(gpanel,"gpanel");
}
}
}
[/CODE]
 
G

Gelöschtes Mitglied 65838

Gast
dein Code ist SEHR schwer zu lesen labels ist mal ne methode dann ist labels ein array... labels2 dann labelsset ...

kannst du bitte den Zeitpunkt angeben ab wann was schief läuft
und dann out.println was schief gelaufen ist

bzw deine methoden und variablen eindeutig benennen



methoden Namen sollten ungefähr aussagen was passiert ; spezielle sachen wie " übergabe darf nicht null sein " kann man als kommentar dann drüber schreiben oder sonst was.. aber labels() + labels + labels2 ist einfach irgendwas
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Die Methode textfields() erzeugt immer neue Textfelder und packt diese in ein Array um diese zurück zu geben.

Jetzt fängt es schon hier an:
In der Methode test (Was für ein Name! Was testet test denn? Da wird die Oberfläche aufgebaut aber nichts getestet) hast du u.a.:
Java:
        for(int i=0;i<textfields().length;i++){
            add(textfields()[i]);
        }

Hier wird jetzt mehrfach textfields() aufgerufen, jedes Mal werden die Textfelder erzeugt, die Du brauchst aber es wird nur ein Textfeld hinzu gefügt.
Das ist also wie:
Ich: Gib mir die Bücher: buch1, buch2, buch3, buch4
Du: Ab ins Geschäft, die 4 Bücher gekauft und mir gegeben.
Ich: buch1 nutze ich (lege es auf den Tisch) und den rest werfe ich in den Müll.
Ich: Gib mir die Bücher: buch1, buch2, buch3, buch4
Du: Ab ins Geschäft, die 4 Bücher gekauft und mir gegeben.
Ich: buch2 nutze ich (lege es auf den Tisch) und den rest werfe ich in den Müll.
...

Also wenig sinnvoll. Textfelder einmal holen und dann alle nutzen.


Das wiederholt sich dann in anmeldung:
Java:
String var =textfields()[0].getText();

Also um beim Beispiel mit den Büchern zu bleiben:
Ich: Gib mir die Bücher: buch1, buch2, buch3, buch4
Du: Ab ins Geschäft, die 4 Bücher gekauft und mir gegeben.
Ich: WTF: In das Buch1 auf dem Tisch habe ich etwas geschrieben - warum steht das nicht in dem Buch?

Also: Speichere die Controls, die Du erstellt hast. Erstelle nicht ständig neue Instanzen sondern nutze die, die Du einmal erstellt hast.

Java:
        JTextField vorname1=tfield("PlayerV1",300,150,100,g);
        JTextField nachname1=tfield("PlayerN1",425,150,200,g);
        JTextField vorname2=tfield("PlayerV2",300,190,100,g);
        JTextField nachname2=tfield("PlayerN2",425,190,200,g);
Das könnte z.B. als Instanzvariablen in der Klasse stehen. Dann entfällt die Methode textfields und du musst nur noch ein add für jede dieser Variablen machen. Und dann kannst Du diese Variablen auch in dem Event Listener verwenden.

Und evtl. schaust Du mal nach Tutorials, die nicht diese dubiose Klasse Var nutzen. Die (und auch andere Tutorials, die vieles static machen wollen) gehören nur an einen Ort: Die Tonne. Daran ändern auch gute Bewertungen nichts fürchte ich. Das aber nur am Rande als dezenter Hinweis.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Mit der ChoiceBox-Auswahl Textfelder hinzufügen AWT, Swing, JavaFX & SWT 18
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
r4w Changelistener auf mehrere Textfelder AWT, Swing, JavaFX & SWT 5
C AWT Textfelder werden nicht automatisch angezeigt AWT, Swing, JavaFX & SWT 2
X Swing Per Button die Labels und Textfelder auslesen AWT, Swing, JavaFX & SWT 8
F Textfelder auslesen AWT, Swing, JavaFX & SWT 12
A Swing JDialog KeyBindings und Textfelder AWT, Swing, JavaFX & SWT 5
P Komische Zeichen beim Abspeichern von TextFelder AWT, Swing, JavaFX & SWT 2
P 2D-Grafik versch. Rectangles aus array von textfelder zeichen AWT, Swing, JavaFX & SWT 6
C TextFelder auslesen AWT, Swing, JavaFX & SWT 20
Landei Swing JToolbar: Textfelder mit normaler Höhe? AWT, Swing, JavaFX & SWT 2
F Swing Mehrere Textfelder in Scrollpane einfügen und dann zum Scrollen bringen? AWT, Swing, JavaFX & SWT 4
S Textfelder JLabels AWT, Swing, JavaFX & SWT 3
D Benutzeroberfläche, Textfelder AWT, Swing, JavaFX & SWT 6
M AWT TextFelder und Labels nicht ausgerichtet AWT, Swing, JavaFX & SWT 6
N Textfelder werden nicht richtig angezeigt AWT, Swing, JavaFX & SWT 2
P Leere Textfelder abfangen AWT, Swing, JavaFX & SWT 4
J Textfelder AWT, Swing, JavaFX & SWT 3
S 2 Textfelder und nen Strich AWT, Swing, JavaFX & SWT 6
C DocumentListener auf mehrere Textfelder AWT, Swing, JavaFX & SWT 5
J Textfelder zu groß für den Text AWT, Swing, JavaFX & SWT 10
P Textfelder in einem Frame lassen sich nicht editieren AWT, Swing, JavaFX & SWT 3
K Textfelder auslesen gibt immer Fehler AWT, Swing, JavaFX & SWT 2
N Textfelder in JDIALOG AWT, Swing, JavaFX & SWT 6
J Durch Textfelder iterieren AWT, Swing, JavaFX & SWT 8
M Textfelder leeren AWT, Swing, JavaFX & SWT 6
T Per Dialog Textfelder löschen AWT, Swing, JavaFX & SWT 4
J Textfelder in Applet übernehmen größen angabe nicht! AWT, Swing, JavaFX & SWT 4
T Textfelder als Klasse im Array? AWT, Swing, JavaFX & SWT 3
K Textfelder auslesen AWT, Swing, JavaFX & SWT 3
P SWT: GridLayout und Textfelder AWT, Swing, JavaFX & SWT 1
B NULL Layout - TextFelder verschwinden AWT, Swing, JavaFX & SWT 8
H Textfelder erzeugen AWT, Swing, JavaFX & SWT 2
D Überwachung mehrerer Textfelder AWT, Swing, JavaFX & SWT 4
N auf textfelder ueber namen zugreifen AWT, Swing, JavaFX & SWT 2
N Textfelder = Inhalt vorhanden && Jtable rendern AWT, Swing, JavaFX & SWT 8
L Textfelder für Dezimal, Binär und Hexwerte. AWT, Swing, JavaFX & SWT 6
D Mehrere verschiedene Textfelder auslesen? AWT, Swing, JavaFX & SWT 10
R Textfelder formatieren AWT, Swing, JavaFX & SWT 11
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
K Swing Buttons erst blinken lassen und dann abfragen, ob sie gedrückt worden sind AWT, Swing, JavaFX & SWT 2
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
J Injection - Aber Controller sind null AWT, Swing, JavaFX & SWT 3
N SceneBuilder wie auf Attribute zugreifen? Diese sind immer null. AWT, Swing, JavaFX & SWT 6
J Event Handling Button "enablen" wenn Eingaben in Textfeldern korrekt sind AWT, Swing, JavaFX & SWT 1
R Swing Welche LayoutManager sind die richtigen für mich? AWT, Swing, JavaFX & SWT 11
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10
G Swing, JavaFx - Felder aus FXML sind null AWT, Swing, JavaFX & SWT 6
S Applet Sind Applets bald tot? Was sagt Oracle? AWT, Swing, JavaFX & SWT 6
B Zu welchem Zeitpunkt sind Methoden anwendbar AWT, Swing, JavaFX & SWT 3
C Swing Inhalt einer JTable aktualisieren und filten nach Feldern die nicht in der Tabelle sind AWT, Swing, JavaFX & SWT 3
J Swing JList: Neue Zeilen mit fireIntervalAdded sind automatisch selektiert AWT, Swing, JavaFX & SWT 2
X Swing Wie merken Buttons, dass sie aus dem Bild sind ? AWT, Swing, JavaFX & SWT 4
aze JTextfield nur so breit dass alle zeichen sichtbar sind AWT, Swing, JavaFX & SWT 2
martinyyyy AWT Parameter erzeugen NullpointerException obwohl sie vorhanden sind? AWT, Swing, JavaFX & SWT 4
S Prüfung ob JCeckBoxen angehakt sind schlägt fehl ? AWT, Swing, JavaFX & SWT 17
M JFace TableViewer + ContentProvider, wo sind die Spalten? AWT, Swing, JavaFX & SWT 6
V JMenu und die Tabs von JTabbedFrame sind auf einmal schwarz AWT, Swing, JavaFX & SWT 3
raptorrs J2D graphics, sind 500px immer 500 px AWT, Swing, JavaFX & SWT 2
A Wo sind die Grafiken für JTree ? AWT, Swing, JavaFX & SWT 3
1 Warum sind JButtons viel breiter als der enthaltene Text ? AWT, Swing, JavaFX & SWT 4
N Insets - Feldvariablen sind 0 AWT, Swing, JavaFX & SWT 8
B 3 Zeilen die unterschiedlich gross sind -->Welches Layout AWT, Swing, JavaFX & SWT 3
L TextArea Zeichenabstand gleich machen AWT, Swing, JavaFX & SWT 8
L JavaFX Gridpane mit gleich großen Spalten AWT, Swing, JavaFX & SWT 23
M Event Handling vertical ValueProperty() alter Wert gleich neuer Wert AWT, Swing, JavaFX & SWT 4
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
Mr.Byte JavaFX Gleich mit JavaFX anfangen? AWT, Swing, JavaFX & SWT 5
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
C JTable Datensätze bleiben immer gleich AWT, Swing, JavaFX & SWT 14
H Fenstergröße bei Mac und Windows gleich einstellen? AWT, Swing, JavaFX & SWT 3
K Swing Warum bleibt das Image immer gleich AWT, Swing, JavaFX & SWT 4
Helgon Zwei jTables gleich Breit AWT, Swing, JavaFX & SWT 4
T BBCodes gleich anzeigen AWT, Swing, JavaFX & SWT 3
Daniel_L JTable - Links-rechts-Klick ist gleich Doppelklick? AWT, Swing, JavaFX & SWT 2
C Fenster gleich bewegen funktioniert nicht ganz! AWT, Swing, JavaFX & SWT 11
E windowClosing() - JFrame nicht durch X knopf gleich beenden? AWT, Swing, JavaFX & SWT 9
G JToolbar gleich als eigenes Fenster öffnen AWT, Swing, JavaFX & SWT 2
O Buttons gleich groß + gleicher Abstand AWT, Swing, JavaFX & SWT 3
I Popup-Trigger-Maustaste gleich beim Programmstart ermitteln? AWT, Swing, JavaFX & SWT 7
B 2 fenster gleich verschieben AWT, Swing, JavaFX & SWT 3
I Button in JToolbar gleich groß AWT, Swing, JavaFX & SWT 2
T Programm gleich wie Windows Media Player in den Task geben AWT, Swing, JavaFX & SWT 10
T JSplitPane immer gleich groß machen AWT, Swing, JavaFX & SWT 3
N LookAndFeel - Nicht gleich alles überschreiben AWT, Swing, JavaFX & SWT 8
G JTextField, gleich reinschreiben AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben