⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainmenu.java

📁 控制记录对象分页显示
💻 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 + -