2011年4月19日
<Java> JVA402-文字檔合併器
這題的題庫已經是完整的程式碼......
我也不知道該寫什麼= =
===========================
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JVA402 extends JFrame implements ActionListener
{
//第一個JPanel用來放置所選取檔案
JPanel pn1 = new JPanel();
//顯示訊息的標籤
JLabel msg = new JLabel("請選取兩個 txt 檔來做合併");
//按鈕上的圖示
ImageIcon image1 = new ImageIcon("JVA04-1.gif");
ImageIcon image2 = new ImageIcon("JVA04-1.gif");
ImageIcon image3 = new ImageIcon("JVA04-2.gif");
//選取檔案的按鈕
JButton bn1 = new JButton("選取要合併的第一個檔案",image1);
JButton bn2 = new JButton("選取要合併的第二個檔案",image2);
JButton bn3 = new JButton("選取合併後要存入的檔案",image3);
//顯示所選取檔案名稱
JTextField tfIn[] = {new JTextField(), new JTextField()};
//顯示所要輸出的檔案名稱
JTextField tf3 = new JTextField(3);
//第二個JPanel用來放置按鈕
JPanel pn2 = new JPanel();
JButton bnOK = new JButton("確定");
JButton bnExit = new JButton("離開");
//合併檔案所用的 IO 類別
JFileChooser jfc = new JFileChooser(".");
InputStream is;
SequenceInputStream sis;
File outputFile;
FileOutputStream out;
public JVA402( ) { addWindowListener(new WinListener()); }
public static void main(String[] args) throws IOException
{
JVA402 test = new JVA402();
test.setTitle("文字檔合併器");
test.setup();
test.setSize(300,200);
test.setVisible(true);
}
//設定畫面元件及 Listener
void setup()
{
Container content = this.getContentPane();
pn1.setLayout(new GridLayout(0,1));
pn1.add(msg);
bn1.addMouseListener(new MouseListen());
bn2.addMouseListener(new MouseListen());
bn3.addMouseListener(new MouseListen());
bn1.addActionListener(this);
bn2.addActionListener(this);
bn3.addActionListener(this);
pn1.add(bn1);
pn1.add(tfIn[0]);
pn1.add(bn2);
pn1.add(tfIn[1]);
pn1.add(bn3);
pn1.add(tf3);
content.add(pn1);
bnOK.addMouseListener(new MouseListen());
bnExit.addMouseListener(new MouseListen());
bnOK.addActionListener(this);
bnExit.addActionListener(this);
pn2.add(bnOK);
pn2.add(bnExit);
content.add(pn2,BorderLayout.SOUTH);
}
// 顯示開啟檔案對話方塊,並將所選取的檔案名稱放入 JTextField tfIn[] 中
void selectInFile(int i)
{
//回傳值為 0 代表使用者不是選擇 Cancel
if(jfc.showOpenDialog(this) == 0)
{
tfIn[i-1].setText(jfc.getSelectedFile().toString());
}
}
// 顯示開啟檔案對話方塊,並將所選取的檔案名稱放入 JTextField tf3 中
void selectOutFile()
{
//回傳值為 0 代表使用者不是選擇 Cancel
if(jfc.showOpenDialog(this) == 0)
{
tf3.setText(jfc.getSelectedFile().toString());
}
}
//進行檔案合併的動作
void combineFiles()
{
try
{
InputStream in0 = new FileInputStream(tfIn[0].getText().trim());
InputStream in1 = new FileInputStream(tfIn[1].getText().trim());
sis = new SequenceInputStream(in0, in1);
outputFile = new File(tf3.getText().trim());
out = new FileOutputStream(outputFile);
int c;
while((c = sis.read()) != -1)
{
System.out.write(c);
out.write(c);
}
sis.close();
out.close();
msg.setText("檔案合併完成");
tfIn[0].setText("");
tfIn[1].setText("");
tf3.setText("");
}
catch (Exception ex)
{
msg.setText("檔案合併沒成功");
}
}
//對按鈕的動作做出回應
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == bnExit)
{
//結束程式
dispose();
System.exit(0);
}
else if(e.getSource() == bnOK)
{
//進行檔案合併
combineFiles();
}
else if(e.getSource() == bn1)
{
// 顯示開啟檔案對話方塊,並將所選取的檔案名稱放入 JTextField tf[0] 中
selectInFile(1);
}
else if(e.getSource() == bn2)
{
// 顯示開啟檔案對話方塊,並將所選取的檔案名稱放入 JTextField tfIn[1] 中
selectInFile(2);
}
else if(e.getSource() == bn3)
{
// 顯示開啟檔案對話方塊,並將所選取的檔案名稱放入 JTextField tf3 中
selectOutFile();
}
}
//用來讓JFrame可以正常結束
class WinListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
e.getWindow().dispose();
System.exit(0);
}
}
//讓按鈕在滑鼠進入會變色
class MouseListen extends MouseAdapter
{
public void mouseEntered(MouseEvent e)
{
((JButton) e.getSource()).setBackground(Color.yellow);
}
public void mouseExited(MouseEvent e)
{
((JButton) e.getSource()).setBackground(new Color(204, 204, 204));
}
}
}
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言