点击JButton时如何显示新表格?

时间:2014-05-09 09:36:59

标签: java swing user-interface jframe jbutton

我正在尝试创建新的JFrame,当JButton调用 start test 时,单击主程序。

我的程序应该是(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();

  }
}

这是我的新框架,我希望在点击开始测试时显示

  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();
}
}

1 个答案:

答案 0 :(得分:0)

现在运行此代码。您没有添加动作侦听器。但是,您的表单可以以更好的OO方式设计。

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); 

}

}

和其他班级

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();

  }
}

此外还有评论代码,因为您使用了两个标签 label_1 label_2 类似 radio_1 .. radio_6 这些只是参考。你应该取消注释我添加的代码以删除控制台错误。

为了创建表单,我已将以下代码添加到72类

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

      startButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            new javaapplication71();

        }
    });

我添加了匿名类 ActionListner 来实现此目的。