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,而且没有滑动条,转得太快,屏幕刷新跟不上