📄 mainmenu.java
字号:
package FinalTest;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.MouseAdapter;
import java.awt.event.*;
public class MainMenu extends JFrame {
JTabbedPane jTabbedPane1 = new JTabbedPane();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JTextArea jTextArea1 = new JTextArea("scrip1");
JTextArea jTextArea2 = new JTextArea("script2");
JScrollPane jScroll=new JScrollPane(jTextArea1);
JScrollPane jScroll1=new JScrollPane(jTextArea2);
ArrayList alList;//该集合用于记录脚本内容。
int lineNum=0;//该变量用于记录当前行数。
String sContent="";//该变量用于记录指定行数脚本内容。
int currentLine;//记录当前行。
int currentPosition;//记录字符串起始位置。
int endPosition;//记录字符串结束位置。
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenu1 = new JMenu();
JMenuItem jMenuItem1 = new JMenuItem();
public MainMenu() {
try {
jbInit();
this.getContent("c:\\test.txt");
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
MainMenu mainmenu = new MainMenu();
mainmenu.setSize(450,360);
mainmenu.setVisible(true);
mainmenu.setResizable(false);
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(null);
jTabbedPane1.setBounds(new Rectangle(75, 69, 258, 143));
jButton2.addActionListener(new MainMenu_jButton2_actionAdapter(this));
jButton1.addActionListener(new MainMenu_jButton1_actionAdapter(this));
this.setJMenuBar(jMenuBar1);
jMenu1.setText("菜单");
jMenuItem1.setText("增加注释");
jMenuItem1.addActionListener(new MainMenu_jMenuItem1_actionAdapter(this));
jMenuItem1.addMouseListener(new MainMenu_jMenuItem1_mouseAdapter(this));
jTabbedPane1.add("script1",jScroll);
jTabbedPane1.add("script2",jScroll1);
jButton2.setBounds(new Rectangle(244, 230, 89, 26));
jButton2.setText(">>>");
this.getContentPane().add(jTabbedPane1);
this.getContentPane().add(jButton1);
this.getContentPane().add(jButton2);
jMenuBar1.add(jMenu1);
jMenu1.add(jMenuItem1);
jButton1.setBounds(new Rectangle(75, 229, 89, 28));
jButton1.setText("<<<");
//向文本区增加键盘监听。
jTextArea1.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
int linecount=0;//记录行位置。
if (evt.getKeyCode()==8) {
try
{
if (sContent == null) {
System.out.println("选择区域为空!");
}
if (sContent == "") {
System.out.println("选择区域为空!");
}
if (sContent.length() == 0) {
System.out.println("选择区域为空!");
}
//选择区开始位置。
int start=jTextArea1.getSelectionStart();
//选择区结束位置。
int end=jTextArea1.getSelectionEnd();
//删除内容。
String delContent=jTextArea1.getSelectedText();
int startline=jTextArea1.getLineOfOffset(start)+lineNum-20;
System.out.println("起始行:"+startline);
System.out.println("起始行内容:"+alList.get(startline));
int endline=jTextArea1.getLineOfOffset(end)+lineNum-20;
System.out.println("结束行:"+endline);
System.out.println("结束行内容:"+alList.get(endline));
String sAllContent="";
for(int i=startline;i<=endline;i++)
{
sAllContent+=alList.get(i);
}
String ALL=sAllContent;
String DEL=delContent.replace("\r\n","").trim();
System.out.println("ALL:"+ALL.length());
byte[] all=ALL.getBytes();
for(int i=0;i<all.length;i++)
{
System.out.println(i+":"+all[i]);
}
System.out.println("DEL:"+DEL.length());
byte[] del=DEL.getBytes();
for(int i=0;i<del.length;i++)
{
System.out.println(i+":"+del[i]);
}
//如果删除内容与行内容相符直接删除。
if(ALL.equals(DEL))
{
int delcount=0;//由于ArrayList集合删除单个对象,后面对象编号整体上移,故用计数方式删除。
for(int i=startline;i<=endline;i++)
{
delcount++;
}
for(int i=0;i<delcount;i++)
{
alList.remove(startline);
System.out.println("执行删除操作");
}
}
//否则如果内容不等,先组合字符串,然后再删除相关记录。
else
{
//得到剩余部分内容。
String insertContent=ALL.replaceAll(DEL,"");
int delcount=0;//由于ArrayList集合删除单个对象,后面对象编号整体上移,故用计数方式删除。
for(int i=startline;i<=endline;i++)
{
delcount++;
}
for(int i=0;i<delcount;i++)
{
alList.remove(startline);
System.out.println("执行删除操作");
}
alList.add(startline,insertContent);
}
}catch(Exception ex)
{
System.out.println("选择区域为空!");
}
}
//如果是回车准备记录输入字符串。
if (evt.getKeyCode() == 10) {
System.out.println("按下回车键!");
//取得当得的字符位置。
currentPosition=jTextArea1.getCaretPosition();
String getByte=jTextArea1.getText().substring(0,currentPosition);
//取得当前行数。
String[] lines=getByte.split("\r\n");
currentLine=lines.length+lineNum-20;
System.out.println("当前行数"+(lines.length+lineNum-20));
System.out.println("当前光标起始处"+currentPosition);
//按下回车后再次增加监听,如果按上或下方向选择则自动在指定位置存储增加的注释内容。增加后销毁相关监听。
jTextArea1.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
if(evt.getKeyCode()==40 || evt.getKeyCode()==38)
{
endPosition=jTextArea1.getCaretPosition();
System.out.println("结束光标处:"+jTextArea1.getCaretPosition());
//此处执行向集合新增记录
alList.add(currentLine,jTextArea1.getText().toString().substring(currentPosition+1,endPosition));
System.out.println("注释增加完毕!增加位置为"+currentLine+"增加信息为:"+jTextArea1.getText().toString().substring(currentPosition+1,endPosition));
//执行增加操作完毕时,销毁此监听。
jTextArea1.removeKeyListener(this);
}
}
});
}
}
});
}
//该方法用于获取脚本内容。并存入集合。
private ArrayList getContent(String asScriptRealPath){
getResultToArray result=new getResultToArray();
alList=result.getContent(asScriptRealPath);
return alList;
}
public void jButton2_actionPerformed(ActionEvent e) {
/***************显示后二十行方法******************/
//如果超出边界显示最后几行。
if(lineNum+20>=alList.size())
{
int length=alList.size()%20;
for(int i=0;i<length;i++)
{
sContent +=alList.get(lineNum).toString() +"\r\n";
lineNum++;
}
lineNum-=length;
jTextArea1.setText(sContent);
sContent = "";
return;
}
//否则显示后20行。
for (int i = 0; i < 20; i++) {
sContent +=alList.get(lineNum).toString() +"\r\n";
lineNum++;
}
System.out.println(lineNum);
System.out.println(alList.size());
jTextArea1.setText(sContent);
sContent = "";
System.out.println(lineNum);
}
public void jButton1_actionPerformed(ActionEvent e) {
//如果超界,显示1-20行。
lineNum-=40;
if (lineNum<0) {
lineNum=0;
for (int i = 0; i < 20; i++) {
sContent +=alList.get(lineNum).toString() +
"\r\n";
lineNum++;
}
jTextArea1.setText(sContent);
sContent = "";
return;
}
//否则显示前20行。
for (int i = 0; i < 20; i++) {
sContent += alList.get(lineNum).toString() +
"\r\n";
lineNum++;
}
jTextArea1.setText(sContent);
sContent = "";
System.out.println("lineNum:"+lineNum);
}
public void jMenuItem1_actionPerformed(ActionEvent e) {
InputFrame inputFrame=new InputFrame();
inputFrame.setSize(500,300);
inputFrame.setVisible(true);
}
}
class MainMenu_jMenuItem1_actionAdapter implements ActionListener {
private MainMenu adaptee;
MainMenu_jMenuItem1_actionAdapter(MainMenu adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem1_actionPerformed(e);
}
}
class MainMenu_jMenuItem1_mouseAdapter extends MouseAdapter {
private MainMenu adaptee;
MainMenu_jMenuItem1_mouseAdapter(MainMenu adaptee) {
this.adaptee = adaptee;
}
}
class MainMenu_jButton1_actionAdapter implements ActionListener {
private MainMenu adaptee;
MainMenu_jButton1_actionAdapter(MainMenu adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class MainMenu_jButton2_actionAdapter implements ActionListener {
private MainMenu adaptee;
MainMenu_jButton2_actionAdapter(MainMenu adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -