我正在尝试创建新的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_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来实现这一点。