//刘亚东制作
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
public class FenGe extends JFrame {
File file=null;
BufferedInputStream in;
BufferedOutputStream out;
InputStream is;
JComboBox[] jc;
long fileLong;
public FenGe() {
super("音频截取");
try{
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
//UIManager.setLookAndFeel(new MotifLookAndFeel());
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(getContentPane());
}catch(Exception e){
e.printStackTrace();
}
JMenuBar bar=new JMenuBar();
final JFileChooser fileChooser=new JFileChooser();
String[] m={"MP3","MP4","AAC","AC3","CD","AIFF","CUE","MOD","Real","TTA","WMA"};
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"音频文件(MP3,MP4,AAC,AC3,CD,AIFF,CUE,MOD,Real,TTA,WMA)",m);
fileChooser.addChoosableFileFilter(filter);
JMenu fileMenu=new JMenu("文件(F)");
fileMenu.setMnemonic('F');
JMenuItem openItem=new JMenuItem("打开(O)",'O');
JMenuItem exitItem=new JMenuItem("退出(X)",'X');
final JProgressBar progressBar=new JProgressBar(0,100);
progressBar.setStringPainted(true);
exitItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
openItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
fileChooser.showOpenDialog(null);
file=fileChooser.getSelectedFile();
fileLong=file.length();
try {
is=new FileInputStream(file.getAbsoluteFile());
in=new BufferedInputStream(is);
progressBar.setValue(0);
JOptionPane.showMessageDialog(null,"读取音频成功!!");
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
});
fileMenu.add(openItem);
fileMenu.add(exitItem);
bar.add(fileMenu);
jc = new JComboBox[9];
JButton button=new JButton("截取");
button.setBounds(220,180,58,25);
for (int i = 0; i < 9; i++) {
jc[i] = new JComboBox();
if(i==0||i==3||i==6){
for (int j = 0; j <1000; j++) {
jc[i].addItem(j + "");
}
}else{
for (int j = 0; j < 60; j++) {
jc[i].addItem(j + "");
}
}
}
JLabel[] labels = new JLabel[12];
Container container = getContentPane();
JPanel panel = new JPanel();
labels[0] = new JLabel("原音频总时间:");
labels[1] = new JLabel("毫秒");
labels[2] = new JLabel("分");
labels[3] = new JLabel("秒");
labels[4] = new JLabel(" 起始时间:");
labels[5] = new JLabel("毫秒");
labels[6] = new JLabel("分");
labels[7] = new JLabel("秒");
labels[8] = new JLabel(" 结束时间:");
labels[9] = new JLabel("毫秒");
labels[10] = new JLabel("分");
labels[11] = new JLabel("秒");
container.setLayout(null);
panel.add(labels[0]);
panel.add(jc[1]);
panel.add(labels[2]);
panel.add(jc[2]);
panel.add(labels[3]);
panel.add(jc[0]);
panel.add(labels[1]);
JPanel panel2=new JPanel();
panel2.add(labels[4]);
panel2.add(jc[4]);
panel2.add(labels[6]);
panel2.add(jc[5]);
panel2.add(labels[7]);
panel2.add(jc[3]);
panel2.add(labels[5]);
JPanel panel3=new JPanel();
panel3.add(labels[8]);
panel3.add(jc[7]);
panel3.add(labels[10]);
panel3.add(jc[8]);
panel3.add(labels[11]);
panel3.add(jc[6]);
panel3.add(labels[9]);
panel.setBounds(0,30,310,50);
panel2.setBounds(0,80,310,50);
panel3.setBounds(0,130,310,50);
bar.setBounds(0,0,310,20);
JLabel l=new JLabel("截取进度:");
JPanel p=new JPanel();
p.add(l);
p.add(progressBar);
p.setBounds(0,180,220,50);
container.add(bar);
container.add(panel);
container.add(panel2);
container.add(panel3);
container.add(button);
container.add(p);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(file==null){
JOptionPane.showMessageDialog(null,"未读取任何文件!!!");
return;
}
progressBar.setValue(0);
int s1=jc[0].getSelectedIndex()+jc[1].getSelectedIndex()*60000+jc[2].getSelectedIndex()*1000;
int s2=jc[3].getSelectedIndex()+jc[4].getSelectedIndex()*60000+jc[5].getSelectedIndex()*1000;
int s3=jc[6].getSelectedIndex()+jc[7].getSelectedIndex()*60000+jc[8].getSelectedIndex()*1000;
//System.out.println("音频总时间:"+s1);
//System.out.println("起始时间:"+s2);
//System.out.println("结束时间:"+s3);
//System.out.println(file.length()+"");
File jiequ=new File(file.getParentFile().getAbsoluteFile()+"\\"+"截取—"+file.getName());
try {
is=new FileInputStream(file.getAbsoluteFile());
in=new BufferedInputStream(is);
int mm=in.read();
for(long i=0;i<(fileLong/s1)*s2;i++){
mm=in.read();
}
OutputStream os=new FileOutputStream(jiequ);
out=new BufferedOutputStream(os);
for(long i=0;i<(fileLong/s1)*(s3-s2);i++){
out.write(in.read());
progressBar.setValue((int)((i*100)/((fileLong/s1)*(s3-s2)))+1);
}
out.flush();
in.close();
out.close();
JOptionPane.showMessageDialog(null,"截取成功!!!");
} catch (IOException e2) {
JOptionPane.showMessageDialog(null,"该文件正在使用中,不能正常截取!!!"+"\n"+"请重新截取!");
}
}
});
//container.setBackground(new Color(240,240,0));
setVisible(true);
this.setResizable(false);
//this.setUndecorated(true);
//panel.setBackground(new Color(100,0,200));
setBounds(400, 300, 310, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new FenGe();
}
}
- 1
- 2
前往页