如何显示新的形式,当我点击JButton



我正在尝试创建新的JFrame时,JButton称为开始测试单击此主程序。

我的程序应该是这样的(图片链接)。

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

现在运行这段代码。您没有添加操作侦听器。然而,你的表单可以用一种更好的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_1label_2类似的radio_1radio_6这些只是引用。您应该取消我为消除控制台错误而添加的代码的注释。

为了创建表单,我在72类 中添加了以下代码
JButton startButton = new JButton("Start test");
      panel3.add(startButton);
      startButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            new javaapplication71();
        }
    });

我添加了匿名类ActionListner来实现这一点。

相关内容

  • 没有找到相关文章