Java程序设计2023-第八次上机练习

8-1简单文本编辑器

编写简单文本编辑器,该程序可以新建、打开、编辑和保存文本文件。当用户点击New时,新建一个文件,用户可以编辑文件内容,然后点击Save保存文件。用户点击Open时,选择一个已有文件,然后可对文件进行编辑。示例输出如图所示。
注意frame.setVisible(true)要放在最后,否则textArea会显示不出来

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStreamWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.filechooser.FileFilter;
class menu{
	JFrame frame;
	JPanel panel;
	JMenuBar menuBar;
	JMenu editMenu;
	JMenuItem paste1,paste2,paste3,paste4;
	JFileChooser chooser;
	JTextArea textArea;
	public menu() {
		frame=new JFrame();
		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize( );
		int screenWidth=screenSize.width;
		int screenHeight=screenSize.height;
		int x=(screenWidth-600)/2; 
		int y=(screenHeight-400)/2;
		frame.setSize(800,600);
		frame.setLocation(x, y);//窗口居中
		frame.setTitle("FileChooserTest");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		menuBar=new JMenuBar();
		frame.setJMenuBar(menuBar);
		editMenu = new JMenu("File");
		menuBar.add(editMenu);
		paste1=new JMenuItem("New");
		paste2=new JMenuItem("Open");
		paste3=new JMenuItem("Save");
		paste4=new JMenuItem("Exit");
		editMenu.add(paste1);editMenu.add(paste2);
		editMenu.add(paste3);editMenu.add(paste4);
		
		textArea=new JTextArea("waiting for inputting...",30,40);
		JScrollPane scrollPane=new JScrollPane(textArea);
		frame.add(scrollPane);
		
		chooser=new JFileChooser();
		
		paste1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				textArea.setText("");
			}
		});
		paste2.addActionListener(new FileOpenListener());//打开文件
		paste3.addActionListener(new FileSaveListener());
		paste4.addActionListener(new ActionListener() {//退出
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		frame.setVisible(true);
	}
	private class FileOpenListener implements ActionListener{//打开文件事件监听器
		public void actionPerformed(ActionEvent e) {
			chooser.setCurrentDirectory(new File("."));
			TextFileFilter filter= new TextFileFilter();
			chooser.setFileFilter(filter);
			chooser.showOpenDialog(null);
			String fileName=chooser.getSelectedFile().getPath();
			textArea.setText("");
			textArea.append("打开文件"+fileName+"\n");
			
			File file=chooser.getSelectedFile();
			FileReader reader=null;
			try {
				reader=new FileReader(file);
				char []buf=new char[10000];
				int len=reader.read(buf);
				textArea.append(new String(buf,0,len));
				reader.close();
				textArea.setVisible(true);
				System.out.println("successfully open");
			}catch (Exception ex) {
				ex.printStackTrace();// TODO: handle exception
			}
		}
	}
	private class FileSaveListener implements ActionListener{//存储文件事件监听器
		public void actionPerformed(ActionEvent e) {
			String filename=JOptionPane.showInputDialog("请输入存储文件名:");
			try {
				FileOutputStream out=new FileOutputStream(new File(filename));
				OutputStreamWriter writer=new OutputStreamWriter(out);
				writer.append(textArea.getText());
				writer.close();
				out.close();
			}catch(Exception ex) {
				ex.printStackTrace();
			}
		}
	}
}

class TextFileFilter extends FileFilter{//文本文件过滤器
	public String getDescription() {
		return "文本文件";
	}
	public boolean accept(File f) {
		if(f.isDirectory())return true;
		String name=f.getName().toLowerCase();
		if(name.endsWith(".java")||name.endsWith(".txt"))return true;
		return false;
	}
}
public class FileEditor {
	public static void main(String []args) {
		new menu();
	}
}

8-2风扇

编写程序,显示3个风扇,用控制按钮开动和停止风扇。可以同时开动和停止3个风扇,也可以分别开动和停止每一个风扇。

没写出来,看别人的,Java风扇
实现得略有瑕疵,没有reverse而是reset,而且没有滑动条,转得太快,屏幕刷新跟不上
Java程序设计2023-第八次上机练习_第1张图片

你可能感兴趣的:(pta题库,java,java,前端)