jasper
jasper

Reputation: 5

After executing only one button, the frame closes

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.IOException;

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

public class Main {

    private static void createAndShowGUI()  {

        JFrame frame1 = new JFrame("FINAL YEAR PROJECT VER 1.0");
        JTextArea test = new JTextArea(200, 200);
        frame1.setSize(500,500);
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame1.add(test);

        FlowLayout experimentLayout = new FlowLayout();
        experimentLayout.setAlignment(FlowLayout.CENTER);
        frame1.setLayout(experimentLayout);



        JButton button = new JButton("Extract Links");
        JButton button1 = new JButton("Render To Text");
        JButton button2 = new JButton("Calculate Similarity");
        JButton button3 = new JButton("File Search");
        JButton button4 = new JButton("Exit");



        //Add action listener to button

        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e)
            {
                try {
                    SimpleWebCrawler.main(null);

                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });      
      //Add action listener to button 1
        button1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                try {
                    RenderToText.main(null);
                } catch (IOException e1) {

                    e1.printStackTrace();
                }
            }
        });

        button2.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e)
            {
                try {
                 readFile.main(null);

                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });   

        button3.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e)
            {
                try {
                    FileInput.main(null);
                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });   

        button4.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });     



        frame1.getContentPane().add(button);
        frame1.getContentPane().add(button1);
        frame1.getContentPane().add(button2);
        frame1.getContentPane().add(button3);
        frame1.getContentPane().add(button4);



        frame1.setVisible(true);
    }


    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

This is a code for creating a frame with 5 buttons. Each buttons has their own functions. The problem i facing now is , after i click the first button, the code runs for the first button, and after that the frame closes. How do i maintain the frame after the first button code run, allowing me to click other button after the first button run.

Upvotes: 0

Views: 247

Answers (1)

Costis Aivalis
Costis Aivalis

Reputation: 13728

Get rid of the main in the SimpleWebCrawler class, turn the SimpleWebCrawler class into a JDialog instead of a JFrame and create an instance and make it visible in the action listener of your button.

Upvotes: 2

Related Questions