1个回答
展开全部
mport java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Disp {
JFrame f; //它是屏幕上window的对象,能够最大化、最小化、关闭。(窗体)
JTextArea textArea; //纯文本的多行区域(文本域)
JScrollPane scrollpane; //面板容器,可以加入到JFrame中 , 它自身是个容器,可以把其他compont加入到JPanel中,如JButton,JTextArea,JTextField等,另外也可以在它上面绘图(带滚动条的面板)
JLabel label;//(标签)
JMenuBar menuBar;//(菜单栏)可以加入菜单
JMenu filemenu;//菜单,可以加入到菜单栏中
JMenu editmenu;//同上
JMenuItem open,save,exit,foreground,background; //菜单项(与上面的两项是在一起使用的,比如说word,打开后有一排文件,编辑,视图这些菜单,这一行菜单是放到菜单栏上的,而某个菜单点开之后,下拉列表中的内容,比如说打印,另存为,指的就是菜单项)
JToolBar toolBar;//工具栏
JButton btnopen;//按钮
JButton btnsave;//同上
File lastFile=null;//文件
public void init(){
f=new JFrame("文本编辑器");//创建一个窗体
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体关闭时默认的操作:点击关闭按钮窗体退出。
f.setSize(400, 300);//设置尺寸(长宽)
f.setVisible(true);//设置窗体为可见,到这一步你就可以看见一个空着的400*300的窗体了
Container frame=f.getContentPane();
menuBar=new JMenuBar();//创建菜单栏
f.setJMenuBar(menuBar);//将菜单栏放到窗体上
filemenu=new JMenu("file");
editmenu=new JMenu("edit");//上面两句创建了俩菜单,文件,和编辑
filemenu.setMnemonic('F');//快捷键,就跟word里面的文件菜单后面括号里跟的那个(F)是一个道理
editmenu.setMnemonic('e');
menuBar.add(filemenu);
menuBar.add(editmenu);//上面两句代码把两个菜单加到菜单栏中
open=new JMenuItem("open");//创建菜单项,跟word中文件菜单列表中的打开一样,下面一句是设置快捷键的
open.setMnemonic('o');
filemenu.add(open); //把上面的菜单项,加入到文件菜单中,到这一步,你点开菜单就看见有个打开这一项了
save=new JMenuItem("save");//下面的原理跟上面一样
save.setMnemonic('s');
filemenu.add(save);
filemenu.addSeparator();//加入分隔符,将菜单项分隔开,可以看一下word里面的分割线
exit=new JMenuItem("exit");//退出 菜单项
exit.setMnemonic('x');
filemenu.add(exit);
//创建前景,背景菜单项加入到,edit菜单
foreground =new JMenuItem("foreground");
background =new JMenuItem("background");
editmenu.add(foreground);
editmenu.add(background);
// Icon openIcon=new ImageIcon("/src/open.png");
//这两句话加载图片生成打开和保存的图标对象。
Icon openIcon=new ImageIcon(this.getClass().getResource("open.png"));
Icon saveIcon=new ImageIcon(this.getClass().getResource("save.png"));
//创建工具条
toolBar=new JToolBar();
frame.add(toolBar,"North");//将工具条加到窗体上
//创建打开和保存按钮
btnopen=new JButton(openIcon);
btnsave=new JButton(saveIcon);
//将按钮加到工具条中
toolBar.add(btnopen);
toolBar.add(btnsave);
//创建文本域
textArea=new JTextArea(200,200);
//创建带滚动条的面板
scrollpane=new JScrollPane(textArea);
//将面板加入到窗体上
frame.add(scrollpane);
//创建标签
label=new JLabel();
//将标签加入到窗体上
frame.add(label,"South");
//将在edit菜单下的背景菜单项添加监听器,里面指定了要进行的操作actionPerformed
background.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//弹出对话框,选择颜色
Color c=new JColorChooser().showDialog(f, "选择背景色", Color.white);
//将文本域的背景色设置为上面选择的颜色
textArea.setBackground(c);
}
});
//同上,下面设置前景色
foreground.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Color c=new JColorChooser().showDialog(f, "选择前景色", Color.black);
textArea.setForeground(c);
}
});
//为打开菜单项添加响应行为
open.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//点击菜单项时会打开文件,函数在后面定义
openFile();
}
});
save.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//点击菜单项时会保存文件,函数在后面定义
saveFile();
}
});
//为按钮添加响应函数
btnopen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
openFile();
}
});
btnsave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
saveFile();
}
});
}
public void saveFile(){
//文件选择框
JFileChooser jfc=new JFileChooser();
if(null!=lastFile){
//默认选中的文件为lastFile
jfc.setSelectedFile(lastFile);
}
//弹出保存对话框
jfc.showSaveDialog(f);
//当按下文件对话框上的“确认”,“取消”按钮或关闭图标,showSaveDialog()方法会返回下列常量之一:JFileChoos.APPROVE_OPTION JFileChoos.CANCEL_OPTION
if(JFileChooser.APPROVE_OPTION==jfc.showSaveDialog(f)){
//获取选中的文件
File file=jfc.getSelectedFile();
if(file.exists()){
//确认对话框
int x=JOptionPane.showConfirmDialog(f, "确定保存吗?","保存提示",JOptionPane.OK_CANCEL_OPTION);
if(x!=JOptionPane.OK_OPTION){//如果没有选择ok,继续调用保存函数,此时的界面是没点保存,没有弹出确认对话框的地方,这些操作步骤跟word里的保存是一样的
saveFile();
return;
}
}
//从文本域读取信息
String info=textArea.getText();
//往文件中写
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
BufferedOutputStream bos=new BufferedOutputStream(fos);
byte[] buf=info.getBytes();
try {
bos.write(buf, 0 , buf.length);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//打开文件
public void openFile(){
JFileChooser jfc=new JFileChooser();
jfc.showOpenDialog(f);
if(JFileChooser.APPROVE_OPTION==jfc.showOpenDialog(f)){
// textArea.append("");
File file=jfc.getSelectedFile();
lastFile=file;
//文件从磁盘读入内存
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//转换存储格式,将缓冲区的数据存到字节数组中
BufferedInputStream bis=new BufferedInputStream(fis);
byte [] buf=new byte[128];
int count=0;
try {
while((count=bis.read(buf))!=-1){
//添加到文本域
textArea.append(new String(buf,0,count));
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
//关闭缓冲区,用完了就关上
bis.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
fis.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// FileNameExtensionfilter
//用指定的扩展名集合进行过滤。文件的扩展名是指文件名最后一个“.”后面的部分。
FileNameExtensionFilter filter = new FileNameExtensionFilter("文档", "txt", "doc");
jfc.addChoosableFileFilter(filter);
//标签的名字设为文件名
label=new JLabel();
label.setText(file.getName());
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询