java swing打印文件_Java swing菜单栏实现打开、保存文件操作

首先,我们用Java swing中JMenu创建菜单栏、菜单项,如下图所示:

d7e0249be64a

1.png

文件下下拉菜单项:打开、保存、打印、退出。

d7e0249be64a

2.png

点击打开按钮(item1),可实现文件的打开操作。

从目录中选择目标文件(txt),确定打开。

Txt文件即可显示在窗口的文档区域。如下图:

d7e0249be64a

3.png

重新输入一些内容,点击文件下拉下的保存文件(item2),选择另存为的目录。

例存在桌面,则在桌面中可看到该txt文件夹。

d7e0249be64a

4.png

打开该文件即可看到输入的内容。

d7e0249be64a

5.png

退出操作(item4)

d7e0249be64a

6.png

具体代码如下:

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.FileDialog;

import java.awt.TextArea;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStreamReader;

import javax.management.RuntimeErrorException;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JRootPane;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javafx.scene.control.Tab;

public class Newcaidan {

JFrame f;

JLabel label;

JTextArea textArea;

JFileChooser fileChooser;

FileInputStream fileInStream;

public Newcaidan() {

// TODO Auto-generated constructor stub

f=new JFrame("测试窗口");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container contentPane=f.getContentPane();

textArea=new JTextArea();

JScrollPane scrollPane=new JScrollPane(textArea);

scrollPane.setPreferredSize(new Dimension(350, 300));

JTextArea textArea = new JTextArea(10, 10);

JPanel panel=new JPanel();

JMenuBar menuBar1=new JMenuBar(); //添加菜单条组件

f.setJMenuBar(menuBar1); //将菜单栏添加到顶层容器中

JMenu menu1=new JMenu("文件");

JMenu menu2=new JMenu("编辑");

JMenu menu3=new JMenu("视图");

JMenu menu4=new JMenu("运行");

JMenu menu5=new JMenu("工具");

JMenu menu6=new JMenu("帮助");

//将菜单组件添加到菜单条组件中

menuBar1.add(menu1);

menuBar1.add(menu2);

menuBar1.add(menu3);

menuBar1.add(menu4);

menuBar1.add(menu5);

menuBar1.add(menu6);

//创建菜单项组件

JMenuItem item1=new JMenuItem("打开");

JMenuItem item2=new JMenuItem("保存");

JMenuItem item3=new JMenuItem("打印");

JMenuItem item4=new JMenuItem("退出");

menu1.add(item1);

menu1.add(item2);

menu1.addSeparator(); //菜单项之间的分隔线组件

menu1.add(item3);

menu1.addSeparator();

menu1.add(item4);

//设置顶层容器类的可见性

f.setVisible(true);

label=new JLabel("",JLabel.CENTER);

contentPane.add(label, BorderLayout.NORTH);

contentPane.add(scrollPane, BorderLayout.CENTER);

contentPane.add(panel, BorderLayout.SOUTH);

f.pack();

//处理退出菜单项的动作事件

item4.addActionListener(new ActionListener() {

@Override

public void actionPerformed( ActionEvent e) {

// TODO Auto-generated method stub

int i=JOptionPane.showConfirmDialog(null, "是否真的退出系统",

"退出确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);

//通过对话框中按钮的选择来决定结果,单机yes时,窗口直接消失

if(i==0)

f.dispose();

}

});

item1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

JFileChooser chooser = new JFileChooser();

if (chooser.showOpenDialog(item1)==JFileChooser.APPROVE_OPTION) {//

File file = chooser.getSelectedFile();

textArea.setText(file.getName()+":"+file.getPath()+"\n"+file.length());

readFile(file);

};

}

});

item2.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

JFileChooser chooser = new JFileChooser();

if (chooser.showSaveDialog(item2)==JFileChooser.APPROVE_OPTION) {

File file = chooser.getSelectedFile();

writeFile(file.getPath());

}

}

});

}

public void copyFile(File file){//复制文件

File to=new File(file.getAbsolutePath()+"_copy");

if (file.isFile()) {

byte[] buf = new byte[1024];//字节流

int length=0;

try {

FileInputStream in=new FileInputStream(file);

FileOutputStream out=new FileOutputStream(to);

while((length=in.read(buf))>0){

out.write(buf,0,length);

}

out.flush();

in.close();

out.close();

} catch (Exception e) {

// TODO Auto-generated catchblock

e.printStackTrace();

}

}

}

public void readFile(File file){//读文件

BufferedReader bReader;

try {

bReader=new BufferedReader(new FileReader(file));

StringBuffer sBuffer=new StringBuffer();

String str;

while((str=bReader.readLine())!=null){

sBuffer.append(str+'\n');

System.out.println(str);

}

textArea.setText(sBuffer.toString());

} catch (Exception e) {

// TODO: handle exception

}

}

public void writeFile(String savepath){//写文件

FileOutputStream fos= null;

try {

fos=new FileOutputStream(savepath);

fos.write(textArea.getText().getBytes());

fos.close();

System.out.println("已保存");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

textArea.getText();

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new Newcaidan();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值