📄 frame.java
字号:
package javaIn;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
public class Frame {
//创建窗体
JFrame frame = new JFrame("拼写检查程序");
//获取屏幕大小
Container content = frame.getContentPane();
Toolkit kit = frame.getToolkit();
Dimension wndSize = kit.getScreenSize();
FileDialog fileDialog;
ReadDictionary dictionary;
SaveCheck savecheck;
Check check;
File openFile,dictionaryFile;
//定义菜单
JMenuBar menubar = new JMenuBar();
JMenu pjFile = new JMenu("文件");
JMenu pjEditor = new JMenu("编辑");
JMenu finderror = new JMenu("查错");
JMenu pjHelp = new JMenu("帮助");
JMenuItem pjNew = new JMenuItem("新建");
JMenuItem pjOpen = new JMenuItem("打开");
JMenuItem pjSave = new JMenuItem("保存");
//JMenuItem pjSaveAs = new JMenuItem("另存为");
JMenuItem pjExit = new JMenuItem("退出");
JMenuItem pjCopy = new JMenuItem("复制");
JMenuItem pjPaste = new JMenuItem("粘贴");
JMenuItem pjDelete = new JMenuItem("删除");
JMenuItem pjCut = new JMenuItem("剪切");
JMenuItem pjSearch = new JMenuItem("查找");
JMenuItem pjSelectAll = new JMenuItem("全选");
JMenuItem pjLoad = new JMenuItem("载入字典");
JMenuItem pjCheck = new JMenuItem("检查");
JMenuItem pjCheckSave = new JMenuItem("保存检查");
JMenuItem pjAbout = new JMenuItem("关于作者");
//定义文本域
JTextArea txtShow1 = new JTextArea(25,wndSize.width/30);
JTextArea txtShow2 = new JTextArea("检测结果:\n",5,wndSize.width/30);
//加滚动条
JScrollPane txtScrollPane1 = new JScrollPane();
JScrollPane txtScrollPane2 = new JScrollPane();
public Frame(){
//设置窗体大小
frame.setBounds(wndSize.width/4, wndSize.height/4, wndSize.width/2, wndSize.height/2);
//设置布局
frame.setLayout(new BorderLayout());
//设置可以关闭窗体
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//组合成菜单
pjFile.add(pjNew);
pjFile.add(pjOpen);
pjFile.add(pjSave);
//pjFile.add(pjSaveAs);
pjFile.addSeparator();
pjFile.add(pjExit);
//pjEditor
pjEditor.add(pjCopy);
pjEditor.add(pjPaste);
pjEditor.add(pjDelete);
pjEditor.add(pjCut);
pjEditor.addSeparator();
pjEditor.add(pjSearch);
pjEditor.add(pjSelectAll);
//finderror
finderror.add(pjLoad);
finderror.add(pjCheck);
finderror.add(pjCheckSave);
//pjHelp
pjHelp.add(pjAbout);
//组合成为完整的菜单
menubar.add(pjFile);
menubar.add(pjEditor);
menubar.add(finderror);
menubar.add(pjHelp);
//给菜单加快捷键
pjFile.setMnemonic('F');
pjEditor.setMnemonic('E');
finderror.setMnemonic('D');
pjHelp.setMnemonic('H');
pjNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
pjOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
pjSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
pjExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_DOWN_MASK));
pjSearch.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_DOWN_MASK));
pjCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
pjPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
pjCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
pjDelete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
pjSelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
pjAbout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_DOWN_MASK));
//给菜单加事件监听
pjNew.addActionListener(new pjNewListener());
pjOpen.addActionListener(new pjOpenListener());
pjSave.addActionListener(new pjSaveListener());
//pjSaveAs.addActionListener(new pjSaveAsListener());
pjExit.addActionListener(new pjExitListener());
pjSearch.addActionListener(new pjSearchListener());
pjCopy.addActionListener(new pjCopyListener());
pjPaste.addActionListener(new pjPasteListener());
pjDelete.addActionListener(new pjDeleteListener());
pjCut.addActionListener(new pjCutListener());
pjSelectAll.addActionListener(new pjSelectAllListener());
pjLoad.addActionListener(new pjLoadListener());
pjCheck.addActionListener(new pjCheckListener());
pjCheckSave.addActionListener(new pjCheckSaveListener());
pjAbout.addActionListener(new pjAboutListener());
//设置滚动条
txtScrollPane1.getViewport().add(txtShow1);
txtScrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txtScrollPane1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
// 设置滚动条
txtScrollPane2.getViewport().add(txtShow2);
txtScrollPane2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txtScrollPane2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
//把组件加到窗体上面
frame.add(menubar,BorderLayout.NORTH);
frame.add(txtScrollPane1,BorderLayout.CENTER);
frame.add(txtScrollPane2,BorderLayout.SOUTH);
frame.setVisible(true);
}
public static void main(String [] args){
Frame frame1 = new Frame();
}
//新建
class pjNewListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
txtShow1.setText("");
}
}
//打开
class pjOpenListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
//打开文件选择对话框
JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(jfc);
//取得打开的文件名称
openFile = jfc.getSelectedFile();
txtShow1.setText("");
FileReader fr;
try {
fr = new FileReader(openFile);
BufferedReader br = new BufferedReader(fr);
//读取文件内容
String str = br.readLine();
while(str != null){
txtShow1.append(str + "\n");
str = br.readLine();
}
//关闭文件操作
br.close();
fr.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
System.out.println(e1);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
//保存
class pjSaveListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
//打开文件保存对话框
JFileChooser jfc = new JFileChooser();
jfc.showSaveDialog(jfc);
//获取文件名称
File fileName = jfc.getSelectedFile();
//进行文件的写入操作
try {
FileWriter fw = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(fw);
String str = txtShow1.getText();
bw.write(str);
bw.close();
fw.close();
} catch (IOException e1) {
System.out.println(e1);
e1.printStackTrace();
}
}
}
//退出
class pjExitListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
//复制
class pjCopyListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
txtShow1.copy();
}
}
//粘贴
class pjPasteListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
txtShow1.paste();
}
}
//删除
class pjDeleteListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
txtShow1.cut();
}
}
//剪切
class pjCutListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
txtShow1.cut();
}
}
//查找
class pjSearchListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JOptionPane joPane = new JOptionPane();
//取得用户输入的字符串
String userStr = joPane.showInputDialog(joPane,"请输入要查找的内容","查找",JOptionPane.QUESTION_MESSAGE);
//把文本域里面的全部内容取出来
String text = txtShow1.getText();
System.out.println(text);
int start = text.indexOf(userStr);
int end = start + userStr.length();
txtShow1.getHighlighter().removeAllHighlights();
try {
txtShow1.getHighlighter().addHighlight(start,end, DefaultHighlighter.DefaultPainter);
} catch (BadLocationException e1) {
System.out.println(e1);
e1.printStackTrace();
}
}
}
//全选
class pjSelectAllListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
txtShow1.selectAll();
}
}
//导入
class pjLoadListener implements ActionListener{
public void actionPerformed(ActionEvent e){
JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(jfc);
//取得打开的文件名称
dictionaryFile = jfc.getSelectedFile();
dictionary=new ReadDictionary(dictionaryFile);
if(dictionary!=null)JOptionPane.showMessageDialog(new JFrame(),"导入成功");
}
}
//检查
class pjCheckListener implements ActionListener{
public void actionPerformed(ActionEvent e){
if(dictionary!=null&&openFile!=null){
txtShow2.setText("检测结果:\n");
check=new Check(dictionaryFile,openFile,txtShow2);
}
else if(dictionary==null)
JOptionPane.showMessageDialog(new JFrame(),"请导入字典文件");
else if(openFile==null)
JOptionPane.showMessageDialog(new JFrame(),"请打开一个文件");
}
}
//保存检测
class pjCheckSaveListener implements ActionListener{
public void actionPerformed(ActionEvent e){
JFileChooser jfc = new JFileChooser();
jfc.showSaveDialog(jfc);
//取得打开的文件名称
File fileName = jfc.getSelectedFile();
dictionary=new ReadDictionary(fileName);
if(dictionary!=null&&openFile!=null&&!openFile.getAbsolutePath().equals(fileName.getAbsolutePath()))
savecheck=new SaveCheck(dictionaryFile,fileName,openFile);
else if(dictionary==null)
JOptionPane.showMessageDialog(new JFrame(),"请导入字典文件");
else if(openFile==null)
JOptionPane.showMessageDialog(new JFrame(),"请打开一个文件");
else if(openFile.getAbsolutePath().equals(fileName.getAbsolutePath()))
JOptionPane.showMessageDialog(new JFrame(),"请选择正确的文件保存");
}
}
//帮助
//关于程序
class pjAboutListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JOptionPane jop = new JOptionPane();
jop.showMessageDialog(jop,"作者:陈建波\n" +
" 高灿兴\n" +
" 欧振锋\n","关于改软件",JOptionPane.INFORMATION_MESSAGE);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -