📄 test.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JPanel { //类申明
JFrame frame;//建立一个窗口
int n=1;
//从第二次开始计算按“下一题”按钮的次数,用于按次序刷新面板上标签
int value; //用来计算测验的最后分数
int x,y,z; //分别用来计算A,B,C选项的个数
public Test(JFrame frame) { //构造函数,参数为窗口名
this.frame = frame;
JLabel title1,title2;
JPanel panel=new JPanel(new GridLayout(2,1));
//设置布局管理器,有利于将两个标签排成大小一样的
JPanel choicePanel = createSimpleDialogBox();
title1 = new JLabel("<html><font color=blue>你和他有可能在一起吗?你们会突破友情的界限吗,你和他是只有一点点还是只差一点点还是不可能呢?</font></html>");
title2 = new JLabel("<html><font color=blue>不要错过我们这个测试!快来看看他值不值得你等待!</font></html>");
//将标签分成两个,利于排版
title1.setFont(new Font("宋体", Font.BOLD, 16));
title2.setFont(new Font("宋体", Font.BOLD, 16)); //设置标签的大小和字体
panel.add(title1);
panel.add(title2); //将两个标签加入到一个面板
choicePanel.setBorder(BorderFactory.createEmptyBorder(20,20,5,20));
setLayout(new BorderLayout());
add(panel, BorderLayout.NORTH);
add(choicePanel, BorderLayout.CENTER);
}
private JPanel createSimpleDialogBox() {
final int numButtons = 3; //radioButton的个数
JRadioButton[] radioButtons = new JRadioButton[numButtons];
final JLabel label =new JLabel("要不要开始测试?");
label.setForeground(new Color(200, 120, 150));
label.setFont(new Font("宋体", Font.BOLD, 15));
final ButtonGroup group = new ButtonGroup();
final JLabel l1=new JLabel(" YES!");
final JLabel l2=new JLabel(" NO!");
final JLabel l3=new JLabel(" WAIT FOR A MOMENT!");
//用三个标签显示三个选项的内容
l1.setFont(new Font("宋体", Font.BOLD, 14));
l2.setFont(new Font("宋体", Font.BOLD, 14));
l3.setFont(new Font("宋体", Font.BOLD, 14));
//设置标签的字体,大小
final JButton button = new JButton("确定");
final JButton b1=new JButton("下一题");
b1.setEnabled(false); //一开始将刷新叶面的按钮禁用
radioButtons[0] = new JRadioButton();
radioButtons[0].setBackground(new Color(120, 180, 100));
radioButtons[0].add(l1); //将l1标签加到第一个radioButton上
radioButtons[0].setActionCommand("A");
radioButtons[1] = new JRadioButton();
radioButtons[1].add(l2); //将l2标签加到第二个radioButton上
radioButtons[1].setBackground(new Color(120, 180, 100));
radioButtons[1].setActionCommand("B");
radioButtons[2] = new JRadioButton();
radioButtons[2].add(l3); //将l3标签加到第三个radioButton上
radioButtons[2].setBackground(new Color(120, 180, 100));
//将三个radioButton都设置成同一种颜色
radioButtons[2].setActionCommand("C");
//设置三个radioButton的选项信息分别为“A”,“B”,“C”,利于以后提取选项信息
for (int i = 0; i < numButtons; i++) {
group.add(radioButtons[i]);
//将三个radioButton加到同一个ButtonGroup里,有利于管理
}
radioButtons[0].setSelected(true); //将初始选项定在第一个radioButton上
button.addActionListener(new ActionListener() { //“确定”键的事件监听器
public void actionPerformed(ActionEvent e) {
String command1 = group.getSelection().getActionCommand();
//提取radioButton的选项信息
if (command1 == "A")
{ //若选项为第一个radioButton时,直接进入测试
label.setText("1.第一次见面的时候:");
l1.setText(" 我们擦肩而过,他假装没看到我.");
l2.setText(" 他向我要电话号码,并把他的给了我.");
l3.setText(" 我很肯定他在不停地看我.");
b1.setEnabled(true);
button.setEnabled(false); //将“确定”键禁用,“下一题”键启用
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
++n; //计算“下一题”键按键次数
switch(n) {
case 2:
label.setText(n+".当你没和你的朋友们一起出去玩时,他们会问他你在哪吗?");
l1.setText(" 他甚至都不能确定我在哪.");
l2.setText(" 不会,他很害羞.");
l3.setText(" 当然啦,他们都是好朋友.");
break;
case 3:
label.setText(n+".如果你在面前,有另外一个女孩子在后面对他眉来眼去?");
l1.setText(" 他们俩这样子已经不止一次了.");
l2.setText(" 如果我看不到,他就会回应她.");
l3.setText(" 他会视而不见,走上前和我说话.");
break;
case 4:
label.setText(n+".如果你和异性聊了很久");
l1.setText(" 他会拉我到一旁详细地问我聊天的内容 .");
l2.setText(" 过后他表现得很奇怪不与我说话.");
l3.setText(" 他会加入我们的谈话,并向暗示我们是认识的.");
break;
case 5:
label.setText(n+".他记得你的生日吗?");
l1.setText(" 不.我们还不是太熟.");
l2.setText(" 他从来不理会这类事情.");
l3.setText(" 当然啦,他总是第一个打电话祝贺的人.");
break;
case 6:
label.setText(n+".假设你们一群人去海滩玩,但是你忽然肚子疼不能游泳,");
l1.setText(" 他与别人下海游泳.");
l2.setText(" 他与别人游一会儿,然后上岸陪我.");
l3.setText(" 他会呆在我身边,直到我感觉好后再一起游泳.");
break;
case 7:
label.setText(n+".你要去看他打一场篮球赛,");
l1.setText(" 他只是注意观众席上穿得最漂亮的那个女孩子。.");
l2.setText(" 他专注于赛事,并没看我,但是赛后他回问我打得怎样.");
l3.setText(" 他每进一个球都会往我这边看.");
break;
case 8:
label.setText(n+".他对你说了一些话让你很生气,");
l1.setText(" 有这种情况吗,那可能是我太敏感了.");
l2.setText(" 直到我气消之前都不敢和我说话.");
l3.setText(" 立刻向我道歉,希望我能不计较.");
break;
case 9:
label.setText(n+".我喜欢收集明星的纪念品,把它们摆放在书桌上,他看到后,");
l1.setText(" 嘲笑了我一个月,说我幼稚.");
l2.setText(" 很高兴,因为我们有一样的爱好,他还补充说他比较喜欢布莱得彼特.");
l3.setText(" 很惊讶,用羡慕的口吻夸奖我漂亮的书桌.");
break;
case 10:
label.setText(n+".你们一群朋友去看电影,他出去买爆米花,");
l1.setText(" 没给我带什么,因为他不能拿太多东西.");
l2.setText(" 他问所有人要什么,但是先问我第一.");
l3.setText(" 回来的时候带了个大号的与我一起分享.");
break;
//以上显示每个题目内容
}
String command2 = group.getSelection().getActionCommand();
if(command2 == "A") {
++x;
}
else if(command2 == "B") {
++y;
}
else if(command2 == "C") {
++z;
} //计下三个raduiButton分别选取次数
if(n==11){
b1.setEnabled(false);
//10个题目做完,再显示结果,之后将“下一题”键禁用
value=y+3*z; //用value计测试总分
if(value<=6){
JOptionPane.showMessageDialog(null, "只是朋友\n"+"至少在目前为止,他对你的感觉仍然停留在朋友上.\n"+"如果他能多了解你,可能他会注意到你的可爱之处,这的确是有点困难的.",
"你的测试分数为:" + value,
JOptionPane.INFORMATION_MESSAGE);}
else if(value<15){
JOptionPane.showMessageDialog(null, "前途明朗\n"+"他是喜欢你的,但是他不能确定你是否也有一样的感觉,\n"+"因为你并没有对他明确地表示过,他只能是继续出现在你身边.\n"+"虽然他现在可能没有计划认真地与你交往,但是连他自己也不清楚目前的这种状况要到什么时候才能结束.",
"你的测试分数为:" + value,
JOptionPane.INFORMATION_MESSAGE);}
else if(value<=30){
JOptionPane.showMessageDialog(null, "这就是爱\n"+"他对你已经完全着迷,只差没有拜倒在你的石榴裙下了.\n"+"他时刻准备为你效劳,分分秒秒关心着你.你们俩还不是男女朋友吗?\n"+"看来只是迟早问题而已了,他在等着你点头同意呐!你喜欢他吗?那就要快点说哦,呵呵.\n"+"如果不喜欢,那就早点说明白,免得他越险越深哦.引起误会可不好了.",
"你的测试分数为:" + value,
JOptionPane.INFORMATION_MESSAGE);}
} //用对话框的形式显示测试结果
}
});
} else if (command1 =="B") {
JOptionPane.showMessageDialog(frame,
"真的不想知道吗?别犹豫了,快测试吧!");
//在最开始没选择第二个radioButton时显示如上对话框
} else if (command1 == "C") {
JOptionPane.showMessageDialog(frame,
"好!记得呆会儿回来!");
//在最开始没选择第三个radioButton时显示如上对话框
}
}
});
return createPane(label,
radioButtons,
button,
b1); //调用createPane函数显示题目面板
}
private JPanel createPane(JLabel description,
JRadioButton[] radioButtons,
JButton showButton,
JButton nextButton) {
int numChoices = radioButtons.length;
JPanel box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS));
box.add(description); // 将显示题目内容的标签加入一个面板
for (int i = 0; i < numChoices; i++) {
box.add(radioButtons[i]); //将各个radioButton加入到上面那个面板
}
JPanel pane = new JPanel();
pane.setLayout(new BorderLayout()); //设置一个测试面板
pane.add(box, BorderLayout.NORTH); //将开始那个面板加入当前面板
pane.add(showButton, BorderLayout.CENTER);
pane.add(nextButton, BorderLayout.SOUTH); //将两个按钮加入当前面板
return pane; // 函数返回当前面板
}
public static void main(String[] args) { //main函数
JFrame frame = new JFrame("他真的爱你吗?");
//产生一个窗口名为”他真的爱你吗?“的实例
Container contentPane = frame.getContentPane();
contentPane.setLayout(new GridLayout(1,1));
contentPane.add(new Test(frame));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -