文章目录
- 算术测试
- 日历与布局
- 记事本
算术测试
编写一个算数测试小程序,用来训练小学生得算数能力
教师类:用来判断计算结果得正确与否
import java.util.Random;
import java.awt.event.*;
import javax.swing.*;
public class Teacher implements ActionListener{
int numberOne,numberTwo;
String operator="";
boolean isRight;
Random random;
int maxInteger;
JTextField textOne,textTwo,textResult;
JLabel operatorLabel,message;
Teacher(){
random = new Random();
}
public void setMaxInteger(int n){
maxInteger=n;
}
public void actionPerformed(ActionEvent e){
String str=e.getActionCommand();
if(str.equals("getProblem")){
numberOne=random.nextInt(maxInteger)+1;
numberTwo=random.nextInt(maxInteger)+1;
double d=Math.random();
if(d>=0.5)
operator="+";
else
operator="-";
textOne.setText(""+numberOne);
textTwo.setText(""+numberTwo);
operatorLabel.setText(operator);
message.setText("请回答");
textResult.setText(null);
}
else if(str.equals("answer")){
String answer = textResult.getText();
try{ int result=Integer.parseInt(answer);
if(operator.equals("+")){
if(result==numberOne+numberTwo)
message.setText("你回答正确");
else
message.setText("你回答错误");
}
else if(operator.equals("-")){
if(result==numberOne-numberTwo)
message.setText("你回答正确");
else
message.setText("你回答错误");
}
}
catch(NumberFormatException ex){
message.setText("请输入数字字符");
}
}
}
public void setJTextField(JTextField...t){
textOne=t[0];
textTwo=t[1];
textResult=t[2];
}
public void setJLabel(JLabel...label){
operatorLabel=label[0];
message=label[1];
}
}
计算类:展现做题页面
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ComputerFrame extends JFrame {
JMenuBar menubar;
JMenu choiceGrade;
JMenuItem grade1, grade2;
JTextField textOne, textTwo, textResult;
JButton getProblem, giveAnswer;
JLabel operatorLabel, message;
Teacher teacherZhang;
ComputerFrame() {
teacherZhang = new Teacher();
teacherZhang.setMaxInteger(20);
setLayout(new FlowLayout());
menubar = new JMenuBar();
choiceGrade = new JMenu("选择级别");
grade1 = new JMenuItem("幼儿级别");
grade2 = new JMenuItem("儿童级别");
grade1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
teacherZhang.setMaxInteger(10);
}
});
grade2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
teacherZhang.setMaxInteger(50);
}
});
choiceGrade.add(grade1);
choiceGrade.add(grade2);
menubar.add(choiceGrade);
setJMenuBar(menubar);
textOne = new JTextField(5);
textTwo = new JTextField(5);
textResult = new JTextField(5);
operatorLabel = new JLabel("+");
operatorLabel.setFont(new Font("Arial", Font.BOLD, 20));
message = new JLabel("你还没有回答呢");
getProblem = new JButton("获取题目");
giveAnswer = new JButton("获取答案");
add(textOne);
add(operatorLabel);
add(textTwo);
add(new JLabel("="));
add(textResult);
add(giveAnswer);
add(message);
add(getProblem);
textResult.requestFocus();
textOne.setEditable(false);
textTwo.setEditable(false);
getProblem.setActionCommand("getProblem");
textResult.setActionCommand("answer");
giveAnswer.setActionCommand("answer");
teacherZhang.setJTextField(textOne, textTwo, textResult);
teacherZhang.setJLabel(operatorLabel, message);
getProblem.addActionListener(teacherZhang);
giveAnswer.addActionListener(teacherZhang);
textResult.addActionListener(teacherZhang);
setVisible(true);
validate();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
}
运行类
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ComputerFrame frame;
frame=new ComputerFrame();
frame.setTitle("算数测试");
frame.setBounds(100,100,650,180);
}
}
结果展示
日历与布局
计算每个月得所有天数
import java.time.LocalDate;
public class GiveCalendar {
/**
* @param date 日期
* @return dataArrays 这个月的所有天
*/
public static LocalDate[] getCalendar(LocalDate date) {
date = date.withDayOfMonth(1);
//date从1开始
int days = date.lengthOfMonth();
LocalDate[] dataArrays = new LocalDate[days];
for (int i = 0; i < days; i++) {
dataArrays[i] = date.plusDays(i);
}
return dataArrays;
}
}
设置布局
import java.awt.*;
import javax.swing.*;
import java.time.*;
import java.util.Currency;
/**
* @author piki
*/
public class CalendarPanel extends JPanel{
public String[] name = {"日","一","二","三","四","五","六"};
public LocalDate currentDate;
LocalDate[] dateArrays;
public CalendarPanel(){
currentDate = LocalDate.now();
dateArrays = GiveCalendar.getCalendar(currentDate);
}
public void showCalendar(LocalDate[] dataArrays){
removeAll();
GridLayout gridLayout = new GridLayout(7,7);
setLayout(gridLayout);
JLabel[] titleWeek = new JLabel[7];
JLabel[] showDay = new JLabel[42];
for (int i = 0; i < 7; i++) {
titleWeek[i] = new JLabel(name[i],JLabel.CENTER);
add(titleWeek[i]);
}
for (int i = 0; i < 42; i++) {
showDay[i] = new JLabel("",JLabel.CENTER);
}
for (int k = 7,i = 0; k < 49; k++,i++){
add(showDay[i]);
}
int space = printSpace(dateArrays[0].getDayOfWeek());
for (int i = 0,j = space + i; i<dateArrays.length;i++,j++){
showDay[j].setText("" + dateArrays[i].getDayOfMonth());
}
repaint();
}
public void setNext(){
currentDate = currentDate.plusMonths(1);
dateArrays = GiveCalendar.getCalendar(currentDate);
showCalendar(dateArrays);
}
public void setPrevious() {
currentDate = currentDate.plusMonths(-1);
dateArrays = GiveCalendar.getCalendar(currentDate);
showCalendar(dateArrays);
}
public int printSpace(DayOfWeek x){
int n = 0;
switch (x){
case SUNDAY: n = 0 ; break;
case MONDAY: n = 1 ; break;
case TUESDAY: n = 2; break;
case WEDNESDAY: n = 3; break;
case THURSDAY: n = 4; break;
case FRIDAY: n = 5; break;
case SATURDAY: n = 6; break;
}
return n;
}
}
展示
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author piki
*/
public class ShowCalendar extends JFrame{
CalendarPanel showCalendar;
JButton nextMonth;
JButton previousMonth;
JLabel showYear,showMonth;
public ShowCalendar(){
showCalendar = new CalendarPanel();
add(showCalendar);
nextMonth = new JButton("下一个月");
previousMonth = new JButton("上一个月");
showYear = new JLabel();
showMonth = new JLabel();
JPanel pNorth = new JPanel();
showYear.setText(""+showCalendar.currentDate.getYear()+"年");
showMonth.setText(""+showCalendar.currentDate.getMonth()+"月");
pNorth.add(showYear);
pNorth.add(previousMonth);
pNorth.add(nextMonth);
pNorth.add(showMonth);
add(pNorth,BorderLayout.NORTH);
nextMonth.addActionListener((e)->{
showCalendar.setNext();
showYear.setText(""+showCalendar.currentDate.getYear()+"年");
showMonth.setText(""+showCalendar.currentDate.getMonthValue()+"月");
});
previousMonth.addActionListener((e)->{
showCalendar.setPrevious();
showYear.setText(""+showCalendar.currentDate.getYear()+"年");
showMonth.setText(""+showCalendar.currentDate.getMonth()+"月");
});
setSize(290,260);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public static void main(String[] args) {
new ShowCalendar();
}
}
结果展示
记事本
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
public class myNotePad{
private static void Pad(){
JFrame frame = new JFrame("NotePad");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,450);
frame.setLocation(300,200);
JMenuBar menuBar = new JMenuBar();
JMenu menu1 = new JMenu("菜单");
JMenu menu2 = new JMenu("帮助");
menuBar.add(menu1);
menuBar.add(menu2);
JMenuItem menuItem1 = new JMenuItem("新建");
JMenuItem menuItem2 = new JMenuItem("退出");
menu1.add(menuItem1);
menu1.addSeparator();
menu1.add(menuItem2);
menuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
menuItem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));
menuItem1.addActionListener(e -> {
JDialog dialog = new JDialog(frame,"无标题",true);
dialog.setVisible(true);
dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
dialog.setSize(200,100);
dialog.setLocation(300,200);
});
menuItem2.addActionListener(e -> {
menuItem2.addActionListener(e1 -> System.exit(0));
});
frame.setJMenuBar(menuBar);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(myNotePad::Pad);
}
}
结果