Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht

Diskutiere JTextField an Button übergeben für Popup-Fenster funktioniert nicht im AWT, Swing, JavaFX & SWT Bereich.
A

Amaisenpär

Hi Leute,

ich versuche für einen Jungesellenabschied ein kleines Scherz-Programm zu schreiben. Kurz gesagt soll dabei durch das Zahlen von Spielgeld die Penisgrösse des Anwenders erhöht werden.

Konkret zu meinem Problem: Ich möchteüber ein JTextField eine Zahl einlesen, die in einer Variable gespeichert wird und an einen JButton einer anderen Klasse übergeben wird. Dieser Button soll dann ein JOptionPane.showInputDialog Fenster öffnen, in dem unter anderem der ins TextField eingegebene Wert wiedergegeben werden soll.

Das einlesen des Strings und das parsen in einen Int-Wert funktioniert einwandfrei. Wenn ich jedoch versuche, diese int Variable an die Klasse des JButton zu übergeben wird stets null angezeigt. Ich habe versucht die Lösung in verschiedenen Videotutorials zu finden. Dort wurde gesagt, dass die Klasse, in der das JTextField ist und die Klasse in der sich der JButton befindet nicht direkt miteinander kommunizieren sollen. Stattdessen sollte die Kommunikation in die Klasse MainFrame ausgelagert werden. Das ganze hat mich nur noch stärker verwirrt. Ich habe jetzt verscheidenste Varianten getestet aber nicht hat geklappt, deswegen möchte ich euch gerne fragen, ob ihr eine Lösung für das Problem habt.

Hier ist die Klasse mit dem JTextField:
Code:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Oldsize extends JPanel {

    //Attributes
    private JLabel oldsize;
    private JLabel cm;
    public JTextField textField;
    public int oldDicksize;
    
    //Constructor
    Oldsize(){
    
    setLayout(new FlowLayout());
    oldsize = new JLabel(" Your dicksize:");
    textField = new JTextField(5);
    cm = new JLabel("cm");
    
    textField.addActionListener(new ActionListener() {

        
        
        public void actionPerformed(ActionEvent e) {
            String size = textField.getText();
            oldDicksize = Integer.parseInt(size);
            System.out.println(oldDicksize);
            
        }
        
    });
    //Add Components
    add(oldsize);
    add(textField);
    add(cm);
    
    
    }
    }
Hier ist die Klasse mit dem JButton:
Code:
import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.JButton;

import javax.swing.JOptionPane;


public class RateButton extends JButton{


    int dicksize;

    String choice;

    


    RateButton(){

        setText("Rate your dicksize now!");

        

        

        addActionListener(new ActionListener() {


            @Override

            public void actionPerformed(ActionEvent e) {

                

                if(dicksize <= 12) {

                choice = JOptionPane.showInputDialog("Your dick is  very small!\n"

                        

                        + "You have 4 options:\n"

                        + "(1)Enlargement S \n"

                        + "(2)Enlargement M \n"

                        + "(3)Enlargement L \n"

                        + "(4)No Enlargement");

                

            }

                else if(dicksize >= 13 && dicksize <= 16) {

                    choice = JOptionPane.showInputDialog("Your dick is medium!\n"

                            

                        + "You have 4 options:\n"

                        + "(1)Enlargement S \n"

                        + "(2)Enlargement M \n"

                        + "(3)Enlargement L \n"

                        + "(4)No Enlargement");

                }

                else if(dicksize >= 17) {

                     choice = JOptionPane.showInputDialog("Your dick is huge!\n"

                            

                        + "You have 4 options:\n"

                        + "(1)Enlargement S \n"

                        + "(2)Enlargement M \n"

                        + "(3)Enlargement L \n"

                        + "(4)No Enlargement");

                }

                System.out.println(choice);

            }

            

            

        });

        

    }


}
Und hier ist die Klasse MainFrame:
Code:
import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MainFrame extends JFrame{
  
    
    Oldsize oldsizePanel = new Oldsize();
    RateButton rateButton = new RateButton();
    Newsize newsizePanel = new Newsize();
    Wallet wallet = new Wallet();
    Rating rating = new Rating();
    int dicksize;
    
    MainFrame(){
        setSize(1000, 600);
        setVisible(true);
        setLayout(new BorderLayout());
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    
      
        
        add(wallet, BorderLayout.NORTH);
        add(rateButton, BorderLayout.CENTER);
        add(oldsizePanel, BorderLayout.WEST);
        add(newsizePanel, BorderLayout.EAST);
        add(rating, BorderLayout.SOUTH);
        
    }
       
    }



Ich habe schon versucht das Ganze über Getter Methoden zu realisieren indem ich ein Objekt der Klasse in der jeweils anderen instanziiert habe und dann eben die Get Methoden afgerufen habe. Funktionierts hat leider nicht.

Wenn jemand eine Idee hat würde ich mich sehr freuen :)

LG
 
mihe7

mihe7

Du könntest z. B. das rateButton-Objekt an den Konstruktor von Oldisze übergeben (Reihenfolge in Mainframe wechselt) und im ActionListener einen Setter (neue Methode) von RateButton aufrufen.
 
Thema: 

JTextField an Button übergeben für Popup-Fenster funktioniert nicht

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben