-1

I am trying to create new JFrame when JButton called start test is clicked this the main program.

This how my program should be (photo link).

package javaapplication72;
import javax.swing.*;
import java.awt.*;

public class javaapplication72{
    JFrame f1;
    JPanel panel1,panel2,panel3,panel4;
    JButton buttton_1,buttton_2;
    JLabel label_1,label_2;
    JRadioButton radio_1,radio_2,radio_3,radio_4,radio_5,radio_6,radio_7;

    javaapplication72(){

      JFrame f1 = new JFrame ("MathTest - Main Menu");
      f1.setVisible(true);
      f1.setSize(300,400);
      f1.setLayout(new GridLayout(0,1));
      f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      panel1 = new JPanel(new GridLayout(0, 2));
      panel1.setBorder(BorderFactory.createLineBorder(Color.black, 1));
      panel1.add(new JLabel("Select a test type"));
      panel1.add(new JRadioButton("Addition"));
      panel1.add(new JLabel(""));
      panel1.add(new JRadioButton("Substraction"));
      panel1.add(new JLabel(""));
      panel1.add(new JRadioButton("Multiplication"));
      panel1.add(new JLabel(""));
      panel1.add(new JRadioButton("Division"));

      panel2 = new JPanel(new GridLayout(0, 2));
      panel2.setBorder(BorderFactory.createLineBorder(Color.black, 1));
      panel2.add(new JLabel("select a diffculty level"));
      panel2.add(new JRadioButton("easy "));
      panel2.add(new JLabel(""));
      panel2.add(new JRadioButton("moderate"));
      panel2.add(new JLabel(""));
      panel2.add(new JRadioButton("hard"));

      panel3 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
      panel3.add(new JLabel(""));
      panel3.add(new JButton("start test"));

      panel4 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
      panel4.add(new JButton("    exit    "));

      f1.add(panel1);
      f1.add(panel2);
      f1.add(panel3);
      f1.add(panel4);

      f1.add(label_1); 
      f1.add(radio_1);
      f1.add(radio_2);
      f1.add(radio_3); 
      f1.add(radio_4); 

      f1.add(label_2);
      f1.add(radio_5);
      f1.add(radio_6); 
      f1.add(radio_7);
      f1.add(buttton_1); 
      f1.add(buttton_2);   

    }

  public static void main(String[] args)
  {
    javaapplication72 xyz =new javaapplication72();

  }
}

This is my new frame I want it to be shown when I click start test

  package javaapplication71;
import javax.swing.*;
import java.awt.*;

public class javaapplication71{
JFrame f1;
JPanel panel1,panel4;
JLabel label_1;
JTextField t1;

 javaapplication71(){
f1 = new JFrame ("MathTest - Test Page");
f1.setVisible(true);
f1.setSize(400,150);
f1.setLayout(new GridLayout(0,1));
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
panel1.add(new JLabel("Question 1     14  -  5  = "));
panel1.add(new JTextField(10));
panel1.add(new JButton("Submit Answer"));



panel4 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
panel4.add(new JButton("   Cancel Test   "));
f1.add(panel1);
f1.add(panel4);
f1.add(label_1); 

}

public static void main(String[] args)
{
    javaapplication71 xyz =new javaapplication71();
}
}
Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
  • 1
    1) For better help sooner, post an [MCVE](http://stackoverflow.com/help/mcve) (Minimal Complete and Verifiable Example). 2) Use a consistent and logical indent for code blocks. The indentation of the code is intended to help people understand the program flow. 3) See [The Use of Multiple JFrames, Good/Bad Practice?](http://stackoverflow.com/a/9554657/418556) – Andrew Thompson May 09 '14 at 09:49

1 Answers1

0

Now run this code. You did not add action listener. However your form can be designed in a better OO way.

package temp;
import javax.swing.*;
import java.awt.*;

public class javaapplication71{
JFrame f1;
JPanel panel1,panel4;
JLabel label_1;
JTextField t1;

 javaapplication71(){
f1 = new JFrame ("MathTest - Test Page");
f1.setVisible(true);
f1.setSize(400,150);
f1.setLayout(new GridLayout(0,1));
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
panel1.add(new JLabel("Question 1     14  -  5  = "));
panel1.add(new JTextField(10));
panel1.add(new JButton("Submit Answer"));



panel4 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
panel4.add(new JButton("   Cancel Test   "));
f1.add(panel1);
f1.add(panel4);
f1.add(label_1); 

}

}

And other class

package temp;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class javaapplication72{
    JFrame f1;
    JPanel panel1,panel2,panel3,panel4;
    JButton buttton_1,buttton_2;
    JLabel label_1,label_2;
    JRadioButton radio_1,radio_2,radio_3,radio_4,radio_5,radio_6,radio_7;

    javaapplication72(){

      JFrame f1 = new JFrame ("MathTest - Main Menu");
      f1.setVisible(true);
      f1.setSize(300,400);
      f1.setLayout(new GridLayout(0,1));
      f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      panel1 = new JPanel(new GridLayout(0, 2));
      panel1.setBorder(BorderFactory.createLineBorder(Color.black, 1));
      panel1.add(new JLabel("Select a test type"));
      panel1.add(new JRadioButton("Addition"));
      panel1.add(new JLabel(""));
      panel1.add(new JRadioButton("Substraction"));
      panel1.add(new JLabel(""));
      panel1.add(new JRadioButton("Multiplication"));
      panel1.add(new JLabel(""));
      panel1.add(new JRadioButton("Division"));

      panel2 = new JPanel(new GridLayout(0, 2));
      panel2.setBorder(BorderFactory.createLineBorder(Color.black, 1));
      panel2.add(new JLabel("select a diffculty level"));
      panel2.add(new JRadioButton("easy "));
      panel2.add(new JLabel(""));
      panel2.add(new JRadioButton("moderate"));
      panel2.add(new JLabel(""));
      panel2.add(new JRadioButton("hard"));

      panel3 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
      panel3.add(new JLabel(""));

      JButton startButton = new JButton("Start test");
      panel3.add(startButton);

      startButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            new javaapplication71();

        }
    });

      panel4 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
      panel4.add(new JButton("    exit    "));

      f1.add(panel1);
      f1.add(panel2);
      f1.add(panel3);
      f1.add(panel4);
//     label_1 = new JLabel();
//     radio_1 = new JRadioButton();
//     radio_2 = new JRadioButton();
//     radio_3 = new JRadioButton();
//     radio_4 = new JRadioButton();
      f1.add(label_1); 
      f1.add(radio_1);
      f1.add(radio_2);
      f1.add(radio_3); 
      f1.add(radio_4); 
//
//      label_2 = new JLabel();
//      radio_5 = new JRadioButton();
//      radio_6 = new JRadioButton();
//      radio_7 = new JRadioButton();

      f1.add(label_2);
      f1.add(radio_5);
      f1.add(radio_6); 
      f1.add(radio_7);
      buttton_1 = new JButton();
      buttton_2 = new JButton();
      f1.add(buttton_1); 
      f1.add(buttton_2);   



    }

  public static void main(String[] args)
  {
    javaapplication72 xyz =new javaapplication72();

  }
}

Further there is commented code it is because you have used two labels label_1 and label_2 similarly radio_1.. radio_6 these are just references. you should uncomment the code I have added to remove console errors.

For creating the form I have added the following code to the 72 class

JButton startButton = new JButton("Start test");
      panel3.add(startButton);

      startButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            new javaapplication71();

        }
    });

I have added the anonymous class ActionListner to achieve this.

Sanyam Goel
  • 2,138
  • 22
  • 40