Ejecutar un cliente GUI varias veces sin tener que cerrarlo

Estoy en el proceso de hacer una GUI donde ingreso una cadena en un cuadro de texto y, una vez que hago clic en un botón J, un segundo cuadro de texto producirá la cadena que ingresé en el primero o producirá una cadena aleatoria a partir de un método que creé (público nulo asociado ()). Cuando ejecuto la GUI y hago clic en el botón para producir el texto en el segundo cuadro de texto, todo funciona bien. Sin embargo, cuando hago clic en el botón por segunda vez para que la GUI realice la misma acción, no sucede nada. ¿Hay algo que pueda hacer para no tener que cerrar la GUI cada vez que deseo ejecutarla varias veces?

public class GUIWindow extends JFrame {
private Joketeller robot= new Joketeller();
private JLabel speakerlabel = new JLabel("Joke");
private JLabel MarcoLabel= new JLabel ("Marco");
private JTextField speakerfield= new JTextField ("Enter Joke Here");
private JTextField Marcofield= new JTextField ("",20);
private JButton Jokebutton=new JButton("Recite Joke >>>");

public GUIWindow()  {
    JPanel dataPanel= new JPanel(new GridLayout(2,2,12,16));
    dataPanel.add(speakerlabel);
    dataPanel.add(MarcoLabel);
    dataPanel.add(speakerfield);
    dataPanel.add(Marcofield);

    JPanel buttonPanel= new JPanel();
    buttonPanel.add(Jokebutton);
    Container container = getContentPane();
    container.add(dataPanel,BorderLayout.CENTER);
    container.add(buttonPanel,BorderLayout.SOUTH);
    Jokebutton.addActionListener(new JokeListener());
}

    private class JokeListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
        String input=speakerfield.getText();
        if (Jokebutton.isEnabled()) {
        robot.setJoke(input);
        String Response= robot.getResponse();
        Marcofield.setText(Response);}

Clase de bromista:

public class Joketeller {


    private static String Marco;
    private static String Response;
    static int i= (int)(Math.random()*((5-1)+1)+1);
    static String r;

    public void setMarco(String Joke ) {
        Marco=Joke;
    }

    public void setJoke(String Joke) {
        Marco=Joke;
        associate();

    }


    public String getJoke() {
        return Marco;
    }

    public static String getMarco() {
        return Marco;
    }

        public static void associate(){
        if(i==1) 
            r= "Connect Angie";
        else if(i==2)
            r= "*Cloud Laugh*";
        else if(i==3)
            r= "Community";
        else if(i==4)
            r=getMarco();
        else if(i==5)
            r= "Indeed!";
        Response=r;

        }

    public String getResponse() {
        return Response;
    }

    }

Cualquier ayuda es apreciada. Gracias.

Respuesta 1

Quiero crear una aplicación simple capaz de editar imágenes. La vista principal de la aplicación contiene JSplitPane con dos JScrollPane. Cada JScrollPane contiene JPanel. El JPanel derecho tiene varios botones, etc. y el izquierdo ...

Tengo el siguiente código Java que usa la biblioteca bounce castle: byte [] privKey = new byte [32]; privKey [31] = 1; ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec ("secp256k1"); ECPoint ...

Tengo una aplicación de cliente de Android que se comunica con el servidor usando Socket. En mi máquina de desarrollo, SocketServer (el servidor también está escrito en Java) está escuchando en 127.0.1.1 en el puerto 8666. También tengo ...

Estoy usando la integración de Spring para almacenar datos en una base de datos mongo. Estoy usando las clases java (MongoDbStoringMessageHandler), no la configuración xml y no puedo encontrar la forma de obtener los resultados cuando ...