📄 modiframe.java
字号:
//ModiFrame.java
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Container;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import javax.swing.JDialog;
import javax.swing.JRootPane;
import javax.swing.JInternalFrame;
import javax.swing.border.Border;
import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.lang.Exception;
import java.util.regex.Pattern;
public class ModiFrame extends JFrame implements ActionListener ,ItemListener{
String str="";
String[] strArr;
String textContent;
int hour,minute,second;
int hour1,minute1,second1;
int plus=5;
String str1,str2,microsecond,microsecond1;
int position1=0;
int position2=100000;
int position=-1;
private JRadioButton forward, back, all, part;
private JButton confirm, cancel;
private ButtonGroup buttonGroup1, buttonGroup2;
private JTextField jf1, jf2, jf3;
private int allorpart=0;//0 is all, 1 is part
private int forwardorback=0;// 0 is forward, 1 is back
public ModiFrame(){
super("智能修改");
Container con=getContentPane();
setBounds(450, 250, 320, 268);
setVisible(true);
setResizable(false);
// try {
// setSelected(true);
// } catch (Exception ex) {
// System.out.println("Exception while selecting");
// }
//setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); //禁用close功能
//setUndecorated(true); //不显示标题栏,最大化,最小化,退出按钮
//getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG );//使frame只剩下标题栏
setLayout(new GridLayout(3,1));
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel1 = new JPanel();
final JPanel panel2 = new JPanel();
final JPanel panel3 = new JPanel();
//JPanel pRoboCtrl=new JPanel();
//pRoboCtrl.setLayout(new GridLayout(4, 1, 2, 5));
//Border titleBorder1=BorderFactory.createTitledBorder("Robot Control");
//pRoboCtrl.setBorder(titleBorder1);
panel1.setLayout(new FlowLayout(FlowLayout.LEFT));
Border titleBorder1=BorderFactory.createTitledBorder("时间控制");
panel1.setBorder(titleBorder1);
//panel.setBounds(23, 65, 399, 164);
forward=new JRadioButton("提前", true);
back=new JRadioButton("推后", false);
jf1=new JTextField("1", 6);
final JLabel label0 = new JLabel();
label0.setText(" ");
final JLabel label1 = new JLabel();
label1.setText("秒");
panel1.add(forward);
panel1.add(back);
panel1.add(label0);
panel1.add(jf1);
panel1.add(label1);
forward.addItemListener(this);
back.addItemListener(this);
buttonGroup1=new ButtonGroup();
buttonGroup1.add(forward);
buttonGroup1.add(back);
panel2.setLayout(new FlowLayout(FlowLayout.LEFT));
Border titleBorder2=BorderFactory.createTitledBorder("位置控制");
panel2.setBorder(titleBorder2);
all=new JRadioButton("全部", true);
part=new JRadioButton("部分", false);
final JLabel label2 = new JLabel();
label2.setText("从:");
final JLabel label3 = new JLabel();
label3.setText("到:");
jf2=new JTextField("0", 6);
jf3=new JTextField("10000", 6);
panel2.add(all);
panel2.add(part);
panel2.add(label2);
panel2.add(jf2);
panel2.add(label3);
panel2.add(jf3);
all.addItemListener(this);
part.addItemListener(this);
buttonGroup2=new ButtonGroup();
buttonGroup2.add(all);
buttonGroup2.add(part);
panel3.setLayout(new FlowLayout());
final JButton confirm = new JButton();
final JButton cancel = new JButton();
confirm.addActionListener(this);
cancel.addActionListener(this);
panel3.add(confirm);
panel3.add(cancel);
confirm.setText("确定");
cancel.setText("取消");
confirm.setActionCommand("confirm");
cancel.setActionCommand("cancel");
con.add(panel1);
con.add(panel2);
con.add(panel3);
//System.out.println(this.getRootPane());
}
public void Modifier(){
try {
textContent = MyModifier1.mytextArea.getText();
//System.out.println(textContent+"what in this!");
strArr=textContent.split("\r\n", -1);
for(int i=0;i<strArr.length;i++){
if(Pattern.matches("^[0-9]{1}[0-9]*$",strArr[i])){
position=position+1;
//System.out.println("Now position is:"+position);
}
if((position>=position1)&&(position<=position2)&&Pattern.matches("^[0-9]{2}[^a-zA-Z_0-9]+.*[0-9]{3}$",strArr[i])){
hour=Integer.parseInt(strArr[i].substring(0,2));
minute=Integer.parseInt(strArr[i].substring(3,5));
second=Integer.parseInt(strArr[i].substring(6,8));
microsecond=strArr[i].substring(9,12);
hour1=Integer.parseInt(strArr[i].substring(17,19));
minute1=Integer.parseInt(strArr[i].substring(20,22));
second1=Integer.parseInt(strArr[i].substring(23,25));
microsecond1=strArr[i].substring(26,29);
//System.out.println("second:"+second);
if((plus<0)&&(hour*3600+minute*60+second<-plus)){
second1=second1+plus;
minute1=minute1+(second1/60);
hour1=hour1+(minute1/60);
while(second1<0){
second1=second1+60;
minute1=minute1-1;
}
while(minute1<0){
minute1=minute1+60;
hour1=hour1-1;
}
if(hour1<0)hour1=0;//考虑到歌词的特殊情况,时间不能为负
second1=second1%60;
minute1=minute1%60;
hour1=hour1%24;
str2=((1==(hour1+"").length())?("0"+hour1):(hour1+""))+":"+((1==(minute1+"").length())?("0"+minute1):(minute1+""))+":"+((1==(second1+"").length())?("0"+second1):(second1+""))+","+microsecond1;
strArr[i]=strArr[i].replaceFirst("^[0-9]{2}[^a-zA-Z_0-9]+.*[0-9]{3}$","00:00:00,000"+" --> "+str2);
}
else{
second=second+plus;
//System.out.println("second+plus:"+second);
minute=minute+(second/60);
hour=hour+(minute/60);
while(second<0){
second=second+60;
minute=minute-1;
}
while(minute<0){
minute=minute+60;
hour=hour-1;
}
if(hour<0)hour=0;//考虑到歌词的特殊情况,时间不能为负
second=second%60;
minute=minute%60;
hour=hour%24;
second1=second1+plus;
minute1=minute1+(second1/60);
hour1=hour1+(minute1/60);
while(second1<0){
second1=second1+60;
minute1=minute1-1;
}
while(minute1<0){
minute1=minute1+60;
hour1=hour1-1;
}
if(hour1<0)hour1=0;//考虑到歌词的特殊情况,时间不能为负
second1=second1%60;
minute1=minute1%60;
hour1=hour1%24;
//strarr[i]=strarr[i]+"改后成为:"+hour+":"+minute+":"+second+"--->"+hour1+":"+ minute1+":"+second1;
str1=((1==(hour+"").length())?("0"+hour):(hour+""))+":"+((1==(minute+"").length())?("0"+minute):(minute+""))+":"+((1==(second+"").length())?("0"+second):(second+""))+","+microsecond;
str2=((1==(hour1+"").length())?("0"+hour1):(hour1+""))+":"+((1==(minute1+"").length())?("0"+minute1):(minute1+""))+":"+((1==(second1+"").length())?("0"+second1):(second1+""))+","+microsecond1;
//str2=hour1+":"+minute1+":"+second1+","+microsecond1;
//strarr[i]=strarr[i].replaceFirst("[0-9]{2}[:]?[0-9]{2}[0-9]{2}[,]?[0-9]{3}",str1);
//System.out.println("before replace:"+strArr[i]);
strArr[i]=strArr[i].replaceFirst("^[0-9]{2}[^a-zA-Z_0-9]+.*[0-9]{3}$",str1+" --> "+str2);
}
//System.out.println("after replace:"+strArr[i]);
//strarr[i]=strarr[i].replaceFirst("^[0-9]{2}[:]?[0-9]{2}[0-9]{2}[,]?[0-9]{3}[.]+[,]?[0-9]{3}$",str1+" --> "+str2);//不成
//strarr[i]=strarr[i]+"此行是时间行!"+hour+":"+minute+":"+second+"--->"+hour1+":"+minute1+":"+second1;
}
str=str+strArr[i];
str=str+"\r\n";
}
//System.out.println(str+"nothing!");
//MyModifier1.strAll=str;
MyModifier1.mytextArea.setText(str);
MyModifier1.mytextArea.moveCaretPosition(0);
}
catch( Exception e ) {
e.printStackTrace();
}
}
public void itemStateChanged(ItemEvent e){
// switch(e.getSource()){
// case all:break;
// case part:position1=Integer.parseInt(jf2.getText()); position2=Integer.parseInt(jf3.getText());break;
// case back:plus=Integer.parseInt(jf1.getText());break;
// case forward:plus=Integer.parseInt("-"+jf1.getText());break;
// default:System.out.println("P1:"+position1+"P2:"+position2+"Plus:"+plus);
// }
if (e.getSource()==all)allorpart=0;
if(e.getSource()==back)forwardorback=1;//plus=Integer.parseInt(jf1.getText());
if(e.getSource()==forward)forwardorback=0;//plus=Integer.parseInt("-"+jf1.getText());
if (e.getSource()==part){
allorpart=1;
//position1=Integer.parseInt(jf2.getText());
//position2=Integer.parseInt(jf3.getText());
}
//System.out.println("P1:"+position1+"P2:"+position2+"Plus:"+plus);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand()=="confirm"){ //is confirm button
this.setVisible(false);
//this.dispose();
if(0==allorpart){
if(0==forwardorback)plus=Integer.parseInt("-"+jf1.getText());
if(1==forwardorback)plus=Integer.parseInt(jf1.getText());
Modifier();
}
else if(1==allorpart){
if(0==forwardorback)plus=Integer.parseInt("-"+jf1.getText());
if(1==forwardorback)plus=Integer.parseInt(jf1.getText());
position1=Integer.parseInt(jf2.getText());
position2=Integer.parseInt(jf3.getText());
Modifier();
}
}
else if(e.getActionCommand()=="cancel"){ //is cancel button
setVisible(false);
this.dispose();
position1=0;
position2=100000;
position=-1;
allorpart=0; //0 is all, 1 is part
forwardorback=0; // 0 is forward, 1 is back
}
// else if(e.getSource()==menuItemSaveAs){//Save to another file
// saveDlg.setVisible(true);
// saveAs(saveDlg.getDirectory(),saveDlg.getFile());
// }
// else if(e.getSource()==menuItemModifier){ //modify by your means
// modiFile();
// }
// else if(e.getSource()==menuItemAbout){ //clear all data
// about();
// }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -