我正在尝试创建新的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();
}
}
答案 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 来实现此目的。