我覺得用一個文件復(fù)制的類就可以實現(xiàn)備份,我大概寫了一個,基本功能可以實現(xiàn),但是總覺得好怪
成都創(chuàng)新互聯(lián)公司主營竹溪網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),竹溪h5小程序開發(fā)搭建,竹溪網(wǎng)站營銷推廣歡迎竹溪等地區(qū)企業(yè)咨詢
你可以給JTextField t1 一個初始路徑,那樣,如果每次都是備份同一個文件直接點保存選路徑就可以,如果想備份其他文件再選其他文件就可以了
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Calendar;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class BakTo extends JFrame implements ActionListener {
JLabel l1 = new JLabel("原始文件");
JTextField t1 = new JTextField(40);
JButton b1 = new JButton("選擇");
JLabel l2 = new JLabel("保存目錄");
JTextField t2 = new JTextField(40);
JButton b2 = new JButton("保存");
JFileChooser j1 = new JFileChooser();
JFileChooser j2 = new JFileChooser();
static File fileFlag = new File("");
public BakTo() {
setBounds(200, 200, 600, 140);
setLayout(new FlowLayout());
add(l1);
add(t1);
add(b1);
add(l2);
add(t2);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
setResizable(false);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
try {
if (e.getSource() == b1) {
int n = j1.showOpenDialog(null);
String filename = j1.getSelectedFile().toString();
if (n == JFileChooser.APPROVE_OPTION) {
t1.setText(filename);
fileFlag = new File(filename);
}
}
else if (e.getSource() == b2) {
j2.setCurrentDirectory(fileFlag);// 設(shè)置打開對話框的默認路徑
j2.setSelectedFile(fileFlag);// 設(shè)置選中原來的文件
int n = j2.showSaveDialog(null);
String filename2 = j2.getSelectedFile().toString();
if(filename2.indexOf(".")!=-1){
filename2=filename2.substring(0,filename2.indexOf("."));
}
// 以下兩句是獲得原文件的擴展名
int flag = t1.getText().lastIndexOf(".");
String kuozhan = t1.getText().substring(flag);
String date = getDate();// 取得當(dāng)前日期
if (n == JFileChooser.APPROVE_OPTION) {
t2.setText(filename2 +date+ kuozhan);// 把日期和擴展名添加到原來文件的后面
}
int b;
char[] t = new char[25];
// 這里我改用了文件流
FileInputStream input = new FileInputStream(t1.getText());
FileOutputStream output = new FileOutputStream(filename2+date
+ kuozhan);// 把擴展名添加到原來文件的后面
int in = input.read();
while (in != -1) {
output.write(in);
in = input.read();
}
input.close();
output.close();
}
} catch (Exception x) {
System.out.println(x);
}
}
public String getDate() {
Calendar rightNow = Calendar.getInstance();
System.out.println(rightNow.toString());
int year = rightNow.YEAR;
int date = rightNow.DATE;
int month = rightNow.MONTH + 1;
String d = year + "年" + month + "月" + date + "日";
return d;
}
public static void main(String args[]) {
BakTo c1 = new BakTo();
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyMenu extends JFrame{
JMenuBar jmbar=new JMenuBar();
JMenu jmenu=new JMenu("顏色");
JMenuItem jmt1=new JMenuItem("紅色"),
jmt2=new JMenuItem("黃色"),
jmt3=new JMenuItem("藍色");
JPanel jp=new JPanel();
MyMenu(){
setTitle("菜單測試");
setSize(400,300);
setJMenuBar(jmbar);
jmbar.add(jmenu);
jmenu.add(jmt1);
jmenu.add(jmt2);
jmenu.add(jmt3);
add(jp);
jmt1.addActionListener(new MenuAction(this));
jmt2.addActionListener(new MenuAction(this));
jmt3.addActionListener(new MenuAction(this));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MyMenu();
}
}
class MenuAction implements ActionListener{
MyMenu m;
MenuAction(MyMenu m){
this.m=m;
}
public void actionPerformed(ActionEvent e){
String color=e.getActionCommand();
if(color=="紅色")m.jp.setBackground(Color.red);
else if(color=="黃色")m.jp.setBackground(Color.yellow);
else if(color=="藍色")m.jp.setBackground(Color.blue);
}
}
不知道你要什么事件代碼,我寫了個比較簡單的你看適合不。
idea中文導(dǎo)出java源代碼方法:
1、進入idea,打開項目的projectstructure。
2、鼠標右鍵項目名稱,選擇openmodulesettings。
3、點擊菜單fileprojectstructure。
4、在projectstructure中選擇artifacts,點擊add,選擇JARFrommoduleswithdependencies。
5、進行相關(guān)的配置,即可導(dǎo)出java源代碼。
給你個小例子,已經(jīng)添加注釋了。自己運行下看看效果,滿意的話記得結(jié)貼子!
import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestMenu extends Frame implements ActionListener{
TextArea ta; //文本區(qū)
MenuBar mb; //MenuBar 類封裝綁定到框架的菜單欄的
Menu mnFile,mnEdit,mnFormat,mnHelp; //從菜單欄部署的下拉式菜單組件
MenuItem miNew,miOpen,miSave,miSaveAs,miExit,miFont; //菜單中的所有項必須屬于類 MenuItem 或其子類之一
CheckboxMenuItem miBinary; //一個可包括在菜單中的復(fù)選框
public TestMenu(){
super("記事本"); //調(diào)用父類構(gòu)造方法
ta = new TextArea("",20,20); //新建文本區(qū),第一個參數(shù)是默認文本,第二個參數(shù)是行數(shù),第三個是列數(shù)
/*
* BorderLayout邊框布局
* 添加文本區(qū)到Frame,BorderLayout.CENTER是居中位置
* */
add(ta,BorderLayout.CENTER);
mb = new MenuBar(); //創(chuàng)建菜單欄對象
/*
* 創(chuàng)建菜單,指定菜單名
* */
mnFile= new Menu("文件");
mnEdit= new Menu("編輯");
mnFormat= new Menu("格式");
mnHelp= new Menu("幫助");
/*
* 創(chuàng)建子菜單,并指定名稱
* */
miNew= new MenuItem("新建");
miOpen= new MenuItem("打開");
miSave= new MenuItem("保存");
miSaveAs= new MenuItem("另存為");
miExit= new MenuItem("退出");
miExit.addActionListener(this); //為退出菜單添加監(jiān)聽
/*
* 添加上面創(chuàng)建的子菜單到文件菜單下
* */
mnFile.add(miNew);
mnFile.add(miOpen);
mnFile.add(miSave);
mnFile.add(miSaveAs);
mnFile.addSeparator(); //將一個分隔線或連字符添加到菜單的當(dāng)前位置
mnFile.add(miExit);
miBinary= new CheckboxMenuItem("二進制"); //創(chuàng)建在復(fù)選框的子菜單
miFont= new MenuItem("字體"); //創(chuàng)建子菜單
/*
* 添加miBinary、miFont兩個子菜單到mnFormat(格式)下
* */
mnFormat.add(miBinary);
mnFormat.add(miFont);
/*
* 將文件、編輯、格式、幫助添加到菜單欄
* */
mb.add(mnFile);
mb.add(mnEdit);
mb.add(mnFormat);
mb.add(mnHelp);
setMenuBar(mb); //添加菜單欄到Frame
/*
* 關(guān)閉窗口時,關(guān)閉運行成語
* */
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String args[]){
TestMenu tm=new TestMenu();
tm.setSize(300,200); //設(shè)置窗體的寬、高
tm.setLocation(300,100); //將組件移到新位置Component類方法
tm.setVisible(true); //設(shè)置顯示窗體,true為顯示,false為隱藏
}
/**
* 監(jiān)聽事件,實現(xiàn)ActionListener接口的actionPerformed方法
*/
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand(); //獲取選中菜單的名稱
System.out.println(s);
if(s.equals("退出")){
System.exit(0); //停止運行程序
}
}
}