有个专科学生让我帮他指导一下作业,题目是专做一个简单的界面,输入成绩进行判定。代码文后可以直接下载。(90-100分优秀,80-90分良好,70-80分中等,60-70分及格,60分以下为不及格)如图下所示:
虽然我做程序有几年了,但是我还真的没有用过java swing写过项目。可是我有不太会拒绝别人,于是就答应帮忙做一下。这个东西我搜资料+实现,用了不到40分钟。同样是没有做过swing的,我给大家分享一些经验。
这个作业的核心是写出个界面,点击按钮获取输入的成绩,进行逻辑处理,然后显示判断结果。逻辑判断这块对我来说没有问题,要不白做这么多年程序了,最难的就是写出个界面。那我就想到了学程序必做的经典demo登录注册。看了网上的代码,我知道了JFrame是窗体,JPanel是一种轻量级容器,JLabel是标签,JTextField是输入框,JButton是按钮,ActionListener是点击事件,GridLayout是网格布局。于是我就创建了四行一列的网格布局,把这些组件摆放好,接着就把点击后的逻辑判断加上,最后显示结果。
运行结果如下图:
解决问题的关键就是你知道这个程序哪里你能解决,哪里你解决不了,对症下药。对于初学者,只不过你不知道你卡在哪里了,所以无从下手。其实有些问题并不是很难,做程序的要给自己信心。
直接上代码,里面注释很全的,适合初学者。
百度盘下载链接: https://pan.baidu.com/s/1nSLrqmYpvvC5WRSjecMJKw 密码: z2sp
package com.queryscore;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Score {
public static JLabel jlb22 ;//显示结果的
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(300, 250);//窗体大小
frame.setTitle("学生成绩判定");//窗体标签
frame.setLayout(new GridLayout(4, 1));//网格式布局
frame.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
JPanel panel1 = new JPanel();//
JPanel panel2 = new JPanel();//
JPanel panel3 = new JPanel();//
JPanel panel4 = new JPanel();//
//第一行
JLabel label1 = new JLabel("学生成绩判定");
label1.setFont(new Font("黑体", Font.BOLD, 26));
panel1.add(label1);
//第二行
JLabel jlb1 = new JLabel("请输入学生成绩:");
jlb1.setFont(new Font("宋体", Font.BOLD, 20));
final JTextField jtf1=new JTextField(4); //创建文本框
jtf1.setFont(new Font("宋体", Font.BOLD, 20));
panel2.add(jlb1);
panel2.add(jtf1);
//第三行
JLabel jlb2 = new JLabel("学生成绩等级:");
jlb2.setFont(new Font("宋体", Font.BOLD, 20));
jlb22 = new JLabel("待定");
jlb22.setFont(new Font("宋体", Font.BOLD, 22));
jlb22.setForeground(Color.red);
panel3.add(jlb2);
panel3.add(jlb22);
//第四行创建按钮
JButton jb1 = new JButton("查询");
JButton jb2 = new JButton("取消");
jb1.setFont(new Font("宋体", Font.PLAIN, 18));
jb2.setFont(new Font("宋体", Font.PLAIN, 18));
jb1.setFocusPainted(false); //设置不绘制焦点
jb2.setFocusPainted(false); //设置不绘制焦点
panel4.add(jb1);
panel4.add(jb2);
frame.add(panel1);
frame.add(panel2);
frame.add(panel3);
frame.add(panel4);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
frame.setVisible(true);//显示窗体
frame.setResizable(false);//锁定窗体
//查询按钮添加一个活动监听
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//System.exit(0);
String chengji = jtf1.getText().trim();
queryscore(chengji);
}
});
//取消按钮添加一个活动监听
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//System.exit(0);
jtf1.setText("");
jlb22.setText("待定");
}
});
}
//判断成绩的函数
public static void queryscore(String chengjiStr){
try {
double chengji = Double.valueOf(chengjiStr);
if (chengji>100){
jlb22.setText("无效成绩");
}
else if (90<=chengji && chengji <= 100){
jlb22.setText("优秀");
}
else if (chengji >= 80 && chengji < 90){
jlb22.setText("良好");
}
else if (chengji >= 70 && chengji < 80){
jlb22.setText("中等");
}
else if (chengji >= 60 && chengji < 70){
jlb22.setText("及格");
}else {
jlb22.setText("不及格");
}
} catch (NumberFormatException e) {
jlb22.setText("无效成绩");
}
}
}