1.界面+文件输入输出流

package finalExam;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea; public class FrameAndFile extends JFrame implements ActionListener{
String default_save_file_name="myTxT.txt"; JTextArea jTextArea;//用户输入框
JButton jButton_read,jButton_save,jButton_clear;//两个Button
public FrameAndFile() {
//界面设置
setTitle("记事本");
Container container=getContentPane();
container.setLayout(new BorderLayout());
setLocation(200,300); jTextArea=new JTextArea(30,80);
jTextArea.setLineWrap(true); //激活自动换行功能
jTextArea.setWrapStyleWord(true);//换行不断字 container.add("North",jTextArea); JPanel jPanel_button_area=new JPanel(new GridLayout(1,3));
jButton_read=new JButton("读取");
jButton_clear=new JButton("清空");
jButton_save=new JButton("保存");
jPanel_button_area.add(jButton_save);
jPanel_button_area.add(jButton_clear);
jPanel_button_area.add(jButton_read); jButton_clear.addActionListener(this);
jButton_read.addActionListener(this);
jButton_save.addActionListener(this);
container.add("Center",jPanel_button_area);
pack();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) {
new FrameAndFile();
} @Override
public void actionPerformed(ActionEvent e) {
switch (e.getActionCommand()) {
case "清空":
jTextArea.setText("");
break;
case "保存":
save();
break;
case "读取":
read();
break;
default:
break;
} } /**
* 文件读取
* 使用FileReader+BufferedReader
* */
public void read() {
FileReader fileReader=null;
BufferedReader bufferedReader=null;
File file=new File(default_save_file_name);
if(file.exists()) {
try {
fileReader=new FileReader(file);
bufferedReader=new BufferedReader(fileReader);
String input_str="";
while(bufferedReader.ready()) {
input_str=input_str+bufferedReader.readLine();
}
jTextArea.setText(input_str);
} catch (FileNotFoundException e) {
showErrorMessage("出错了:"+e);
e.printStackTrace();
} catch (IOException e) {
showErrorMessage("出错了:"+e);
e.printStackTrace();
}finally {
try {
bufferedReader.close();
fileReader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }else {
showErrorMessage("文件不存在!");
} }
/**
* 文件保存
* 使用FileWriter
* */
public void save() {
Writer writer=null;
File file=new File(default_save_file_name);
try {
writer=new FileWriter(file,true);
String string=jTextArea.getText();
if(string!=null||!string.equals("")){
writer.write(string);
writer.flush();
showMessage("保存成功");
}else {
showErrorMessage("请输入完整!");
} } catch (IOException e) {
showErrorMessage("出错了:"+e);
e.printStackTrace();
}finally {
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } public void showMessage(String message) {
JOptionPane.showMessageDialog(null, message);
}
public void showErrorMessage(String message) {
JOptionPane.showMessageDialog(null, message, "警告",
JOptionPane.WARNING_MESSAGE);
} }

2..编写选号程序,在窗体中安排6个标签,每个标签上显示0-9之间的一位数字,每位数字用一个线程控制其变化,单击“停止”按钮则所有标签数字停止变化。(多线程)

package finalExam;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel; public class MultiplyThread extends JFrame{
//自定义一个类,负责封装所有控件的操作
RandomPanelManager randomPanelManager;
//主类只负责界面操作
public MultiplyThread() {
setTitle("抽号");
Container container=getContentPane();
container.setLayout(new FlowLayout());
setBounds(200,300,300,350); randomPanelManager=new RandomPanelManager();
container.add(randomPanelManager.getCom()); setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE); } //管理类
class RandomPanelManager implements ActionListener{
List<MyLable> lables;//用来存放6个MyLable
JPanel jPanel;//封装在一个大的JPanel中
public RandomPanelManager() {
lables=new ArrayList<MultiplyThread.MyLable>();
jPanel=new JPanel(new GridLayout(7,1,10,10));
for(int i=0;i<6;i++) {
MyLable myLable=new MyLable();
lables.add(myLable);
jPanel.add(myLable);
}
JPanel jPanel_buttonJPanel=new JPanel(new GridLayout(1,2));
JButton jButton_startButton=new JButton("开始");
JButton jButton_endButton=new JButton("停止");
jButton_endButton.addActionListener(this);
jButton_startButton.addActionListener(this);
jPanel_buttonJPanel.add(jButton_startButton);
jPanel_buttonJPanel.add(jButton_endButton);
jPanel.add(jPanel_buttonJPanel);
}
public JPanel getCom() {
return jPanel;
}
@Override
public void actionPerformed(ActionEvent e) {
switch (e.getActionCommand()) {
case "开始":
start();
break;
case "停止":
stop();
break;
default:
break;
}
}
/**
* 开始随机数
* 注意需要先把flag置为true
* 再创建Thread并放入运行
* */
public void start() {
for (MyLable item:lables) {
item.init();
Thread thread=new Thread(item);
thread.start();
}
}
/**
* 停止随机数
* 只需要把flag置false即可
* */
public void stop() {
for (MyLable item:lables) {
item.stop();
}
}
}
//自定义控件,实现Runnable接口
class MyLable extends JPanel implements Runnable{
JLabel jLabel_tag;
boolean flag=true;
public MyLable() {
jLabel_tag=new JLabel("0");
this.setLayout(new FlowLayout());
this.add(jLabel_tag);
} public void setText() {
jLabel_tag.setText(getRandomNum()+"");
}
/**
* 获取随机数
* 种子为:当前时间
* 范围[0-9]
* */
public int getRandomNum(){
Date date=new Date();
Random random=new Random(date.getTime());//随机种子
return random.nextInt(10);
} @Override
public void run() {
while(flag) {
setText();
}
}
public void stop() {
flag=false;
}
/**
* 恢复,考虑到重复执行的情况
* */
public void init() {
flag=true;
}
} public static void main(String[] args) {
new MultiplyThread();
}
}

3.异常处理从键盘输入一个正整数,判断是否为偶数,不是则抛出异常

package finalExam;

import java.util.Scanner;
import java.util.regex.Pattern; public class MyException extends RuntimeException { private static final long serialVersionUID = 123456789L; public MyException() {
super();
// TODO Auto-generated constructor stub
} public MyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
} public MyException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
} public MyException(String message) {
super(message);
// TODO Auto-generated constructor stub
} public MyException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
} public static void main(String[] args) {
Scanner scanner=null;
try {
System.out.println("请输入一个整数并继续:");
scanner=new Scanner(System.in);
String inputstr=scanner.nextLine();
if(isNumeric(inputstr)) {
Integer a=Integer.parseInt(inputstr);
if(a<0) {
throw new MyException("不是正整数");
}
if(a%2!=0) {
throw new MyException("不是偶数");
}
System.out.println("输入成功!");
}else {
throw new MyException("不是整数");
} } catch (Exception e) {
e.printStackTrace();
}finally {
scanner.close();
}
}
/**
* 通过正则判断字符串是否为整数
* 这个是我考虑的比较多的,可以直接不用判断
* 在主函数中使用Scanner.nextInt
* 如果输入不是整数会自动抛出异常
* */
public static boolean isNumeric(String string){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(string).matches();
} }

最新文章

  1. jQuery的4种事件绑定方法
  2. openjdk 完全编译指南
  3. cordova 版本
  4. MySQL中的约束简单使用
  5. [USACO2003][poj2187]Beauty Contest(凸包+旋转卡壳)
  6. POJ 1528问题描述
  7. js操作
  8. mysql视图 更新中的问题
  9. SQL 2005/2008 连接SQL 2000报18456错误
  10. LeetCode724. 寻找数组的中心索引
  11. China Tightens Recycling Import Rules
  12. Web标准中xhtml规范的内容有哪些
  13. BOM基础 计时器 定时器 DOM 基础
  14. Ubuntu 18.04 安装Docker
  15. Python【每日一问】06
  16. Sql Server 统计当天数据
  17. css3之calc()
  18. Maven+TestNG+ReportNG/Allure接口自动化测试框架初探(上)
  19. node创建一个简单的web服务
  20. win10系统遇到的问题解决

热门文章

  1. orm 锁 和 事务
  2. spring源码系列(二):IOC接口设计分析
  3. 异常处理 | java.lang.IllegalArgumentException: Request header is too large
  4. BJUT数字图像处理作业
  5. WTL对话框添加背景图片
  6. Spring基础(一)_控制反转(IOC)
  7. Docker容器到底是什么?
  8. Java集合中removeIf的使用
  9. MapReduce清洗数据进行可视化
  10. php连接mySql数据库 示例