【Java swing】就是学着玩-真面向百度编程!!!!!

都说Java程序员,如果没有对象,那就new一个,基于这方面的需求,我就来new一个

新手自学1个月上路,多多指教,仅作记录和自我吐槽。真面向百度编程!!!!!。

等new的对象方法不够了,后面再细细琢磨。基友推荐我用electron+vue,说是好看,半天一个项目,可惜=-=前置技能太多了,一时间开不动这个豪车,只能后面从前置技能慢慢学了

欢迎指点江山,等我以后打回来。手动滑稽

首先来一波散装【含白嫖代码】UI类

import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.util.Enumeration;

public class lili{

    public static DefaultMutableTreeNode rootTree = null;
    public static JFrame jfMain = null;
    public static JPanel panelMain =null;
    public static BGDPanel textPanel =null;
    public static JTree tree = null ;
    public static JScrollPane jScrollPaneText = null;
    public static JTextPane textArea = null;
//    public static JTextArea textArea = null;
    public static JTextArea jTextSelect = null;
    public static JTextArea jTextlike = null;
    public static PopupMenu popupMenuselect=null;
    public static PopupMenu popupMenuCadd =null;
    public static ListenerClick listener = new ListenerClick();
    public static JScrollPane jScrollPaneleft = null;


    public static void main(String args[]){
        jfMain = new JFrame("beta 2.0");
        jfMain.setBounds(0,0,1600,1000);

        jfMain.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


        //设置右上角图标
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        Image icon = toolkit.getImage("src/fish.png");
        jfMain.setIconImage(icon);


        panelMain = new JPanel(new BorderLayout());

        textPanel = new BGDPanel();
        textPanel.setLayout(new BorderLayout());


        JMenuBar bar = new JMenuBar();
        JMenu jMenufile =  new JMenu("目录");
        JMenuItem jMenuItemFileOffShowTree = new JMenuItem("隐藏书目");
        listener.menuItemOffShowTree(jMenuItemFileOffShowTree);
        JMenuItem jMenuItemFileOpenPath = new JMenuItem("选择书目");
        listener.menuItemOpenPathListener(jMenuItemFileOpenPath);
        JMenuItem jMenuItemFileShowTree = new JMenuItem("显示书目");
        listener.menuItemShowListenter(jMenuItemFileShowTree);
        jMenufile.add(jMenuItemFileOpenPath);
        jMenufile.add(jMenuItemFileOffShowTree);
        jMenufile.add(jMenuItemFileShowTree);


        JMenu jMenuDaohang =  new JMenu("数据库");
        JMenuItem jMenuItemInstallDB = new JMenuItem("导入素材");
        listener.menuItemInstallDBListener(jMenuItemInstallDB);
        JMenuItem jMenuItemDelValue = new JMenuItem("删除导入");
        listener.menuItemDelDBListener(jMenuItemDelValue);
        JMenuItem jMenuItemLikeValue = new JMenuItem("收藏列表操作");
        listener.menuItemLikeDBListener(jMenuItemLikeValue);

        jMenuDaohang.add(jMenuItemLikeValue);
        jMenuDaohang.add(jMenuItemInstallDB);
        jMenuDaohang.add(jMenuItemDelValue);


        JMenu jMenuset =  new JMenu("设置");
        JMenuItem jMenuItemSetCheckImage = new JMenuItem("背景选择");
        listener.menuItemTextBackgroup(jMenuItemSetCheckImage);
        JMenuItem jMenuItemSetMianFont = new JMenuItem("字体");
        listener.menuItemFontListener(jMenuItemSetMianFont);
        JMenuItem jMenuItemsetColor = new JMenuItem("字体颜色");
        listener.menuItemsetColorListener(jMenuItemsetColor);

        jMenuset.add(jMenuItemSetCheckImage);
        jMenuset.add(jMenuItemSetMianFont);
        jMenuset.add(jMenuItemsetColor);

        JMenu jMenuCaidan =  new JMenu("彩蛋");
        JMenuItem jMenuItemSnake = new JMenuItem("神秘");
        jMenuCaidan.add(jMenuItemSnake);
        listener.menuItemShenMi(jMenuItemSnake);


        bar.add(jMenufile);
        bar.add(jMenuDaohang);
        bar.add(jMenuset);
        bar.add(jMenuCaidan);

        panelMain.add(bar, BorderLayout.NORTH);





//        textArea = new JTextArea();
        textArea = new JTextPane();
//        textArea.setContentType("text; charset=UTF-8");
        Dimension textPanelGetSize = textPanel.getSize();
        textArea.setSize(textPanelGetSize);
        jScrollPaneText = new JScrollPane(textPanel);
        jScrollPaneText.setOpaque(false);
        jScrollPaneText.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);  // 禁用X滚动
//        textArea.setLineWrap(true);
        textArea.setOpaque(false);  // 关闭控件像素显示
        Font font = new Font("新宋体",1,18);
        textArea.setFont(font);

//        jPanelLeft = new JPanel();
        JSplitPane sp_v = new JSplitPane(JSplitPane.VERTICAL_SPLIT);//垂直分割面板
        sp_v.setDividerSize(5);//分隔条宽度x像素
        sp_v.setContinuousLayout(true);//无拖影
        sp_v.setDividerLocation(jfMain.getSize().height/2);//分隔条距离上方x像素

        jTextSelect = new JTextArea();   // 上 面板 查询结果展示

        JScrollPane jScrollPaneTextUp = new JScrollPane(jTextSelect);
        jTextSelect.setEditable(false);
        jTextSelect.setColumns(30);
        jTextSelect.setLineWrap(true);
        sp_v.setTopComponent(jScrollPaneTextUp);

        jTextlike = new JTextArea();     //下面版 收藏结果
        JScrollPane jScrollPaneTextDown = new JScrollPane(jTextlike);
        jTextlike.setEditable(false);
        jTextlike.setLineWrap(true);
        sp_v.setBottomComponent(jScrollPaneTextDown);
        panelMain.add(sp_v,BorderLayout.EAST);


        popupMenuselect=new PopupMenu();  //创建弹出菜单
        MenuItem menuItemOpen = new MenuItem("匹配");
        listener.selecttext(menuItemOpen);
        popupMenuselect.add(menuItemOpen);

//        popupMenu.add(menuItemSCadd);
        textArea.add(popupMenuselect);
//        textArea.addMouseListener(listener.selectmenuItem(popupMenu));
        listener.selectmenuItem(textArea);

        popupMenuCadd =new PopupMenu();  //创建弹出菜单
        MenuItem menuItemSCadd = new MenuItem("收藏");
        listener.likeText(menuItemSCadd);
        popupMenuCadd.add(menuItemSCadd);

        jTextSelect.add(popupMenuCadd);
        listener.likemenuItem(jTextSelect);


        textPanel.add(textArea,BorderLayout.CENTER);
        panelMain.add(jScrollPaneText, BorderLayout.CENTER);


        jfMain.setContentPane(panelMain);
        jfMain.setLocationRelativeTo(null);
        jfMain.setVisible(true);

    }


    public static void setTree(DefaultMutableTreeNode Tree){
        try{
            panelMain.remove(tree);

        }catch (NullPointerException e){

        }finally {
            rootTree = Tree;
            tree =new JTree(rootTree);
            listener.treeListener(tree);

            // 展开所有结点
            TreeNode root = (TreeNode) tree.getModel().getRoot();
            showExpandAll(tree,new TreePath(root), true);
            jScrollPaneleft = new JScrollPane(tree);
            jScrollPaneleft.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            panelMain.add(jScrollPaneleft,BorderLayout.WEST);
            tree.setRootVisible(false);
            jfMain.setContentPane(panelMain);
        }
    }


    // 展开树的所有节点的方法
    private static void showExpandAll(JTree tree, TreePath parent, boolean expand)
    {
        TreeNode node = (TreeNode) parent.getLastPathComponent();
        if (node.getChildCount() >= 0)
        {
            for (Enumeration e = node.children(); e.hasMoreElements();)
            {
                TreeNode n = (TreeNode) e.nextElement();
                TreePath path = parent.pathByAddingChild(n);
                showExpandAll(tree, path, expand);
            }
        }
        if (expand)
        {
            tree.expandPath(parent);
        } else
        {
            tree.collapsePath(parent);
        }
    }



    // 隐藏书目
    public static void setoffshowTree(){
        try {
            jScrollPaneleft.setVisible(false);
            jfMain.setVisible(true);
        }catch (NullPointerException e){

        }

    }

    // 显示书目
    public static void  setTreeShow(){
        try {
            jScrollPaneleft.setVisible(true);
            jfMain.setVisible(true);
        }catch (NullPointerException e){

        }
    }

    public static void settextFont(String font,int style,int size){

        textArea.setFont(new Font(font,style,size));
    }

    public static void settextColor(Color color){
//        textArea.setCaretColor(color);
        SimpleAttributeSet attrSet = new SimpleAttributeSet();
        StyleConstants.setForeground(attrSet, color);
        Document doc = textArea.getDocument();
        String str = textArea.getText();
        textArea.setText("");
        try {
            doc.insertString(doc.getLength(), str, attrSet);
        } catch (BadLocationException e) {
            System.out.println("BadLocationException:   " + e);
        }
    }

    public static void setTextBackGroud(Image image){
        textPanel.image = image;
    }

}

//自定义JPanel继承类,重写添加绘制背景方法
class BGDPanel extends JPanel {
    public static Image image = new ImageIcon(ClassLoader.getSystemResource("img/senglin.jpg")).getImage();
    public BGDPanel(Image image){
        this.image = image;
    }
    public BGDPanel(){ }

    @Override
    public void paintComponent(Graphics g) {
        int x = 0;
        int y = getY()*-1;
        g.drawImage(image, x, y, getSize().width,
                getSize().height-y +30, this);

    }
}

然后一些花里胡哨的监听类,本来想着老老实实把各种功能分开来着,写着写写就···混搭了,懒得调整了。嗯嫖的少多了,大部分自己写。

import play.SnakeFrame;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class ListenerClick extends lili{
    // 树状目录 监听事件
    public String strTreePath = "";

    public void treeListener(JTree tree){
        tree.addTreeSelectionListener(new TreeSelectionListener() {
            public void valueChanged(TreeSelectionEvent evt) {
                //  取得选择状态变化的所有路径
                TreePath[] paths = evt.getPaths();
                for (int i=0; i<paths.length; i++) {
                    // 如果处于选择状态
                    if (evt.isAddedPath(i)) {
                        // 将路径转化为节点数组
                        Object[] nodes=paths[i].getPath();
                        // 得到最后一个节点,即选择的节点
//                        for (Object str:nodes){

//                        }
                        strTreePath = nodes[0].toString();
                        for (int x = 2;x<nodes.length;x++){
                            strTreePath = strTreePath + "\\" + nodes[x];
                        }
                        DefaultMutableTreeNode node=(DefaultMutableTreeNode)nodes[nodes.length-1];
//                         输出节点名

//                         判断是否是文件,执行读取
                        File file = new File(strTreePath);
                        String textvalue = "";
                        if(file.getName().endsWith(".txt")) {
                            Path path = Paths.get(strTreePath);
                            try{
                                textvalue = new String(Files.readAllBytes(path));
                            }catch (IOException e){
                                JOptionPane.showMessageDialog(null,
                                        "打开'%s'文件失败".formatted(file.getName()),
                                        "异常",JOptionPane.WARNING_MESSAGE);
                            }finally {
                                textArea.setText(textvalue);
                            }
                        }else {
                            setTreeShow();
                        }
                    }
                }
            }
        });
    }


    // 打开目录树
    public  void menuItemOpenPathListener(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String str = new FileClass().getTreePath();
                DefaultMutableTreeNode rootTree = new DefaultMutableTreeNode(str);
                if (str.equals("0")){
                }else {
                    rootTree.add(new TreeClass().traverseFolder(str));
                    setTree(rootTree);
                }
            }
        });
    }
    // 隐藏书目
    public void menuItemOffShowTree(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setoffshowTree();
            }
        });
    }

    // 显示书目
    public  void menuItemShowListenter(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setTreeShow();
            }
        });
    }
    // 导入素材
    public  void menuItemInstallDBListener(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                    FileClass.fileReader();
            }
        });
    }

    // 监听 删除导入记录。
    public void menuItemDelDBListener(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                new SqliteClass().del_list_sel();
            }
        });
    }

    public void menuItemTextBackgroup(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String str = new FileClass().getFilePath();
                if (str != null){
                    Image image = Toolkit.getDefaultToolkit().getImage(str);
                    setTextBackGroud(image);
                }
            }
        });

    }

    public void menuItemLikeDBListener(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                JFrame jf = new JFrame("收藏列表操作");
                jf.setBounds(500,600,500,600);
                JPanel jp = new JPanel(new BorderLayout());
                String[] title = {"收藏内容","标签"};
                DefaultTableModel jbmd = new DefaultTableModel();
                jbmd.setColumnIdentifiers(title);
                new SqliteClass().selLikeAll(jbmd);
                JTable jt = new JTable();
                jt.setDefaultRenderer(Object.class, new TableCellTextAreaRenderer());
                ArrayList<String> list = new SqliteClass().selLikeType();
                JComboBox jcbb = new JComboBox();
                if (list != null){
                    for(String string:list){
                        jcbb.addItem(string);
                    }
                }
                jcbb.addItemListener(new ItemListener() {
                    @Override
                    public void itemStateChanged(ItemEvent e) {
                        if(e.getStateChange() == e.SELECTED){
                            if (jcbb.getSelectedItem() == "默认"){
                                jbmd.getDataVector().removeAllElements();
                                new SqliteClass().selLikeAll(jbmd);
                            }else {
                                jbmd.getDataVector().removeAllElements();   //清空
                                new SqliteClass().selLikeTypeValue(jbmd,jcbb.getSelectedItem().toString());
                            }

                        }
                    }
                });

                JPopupMenu jPopupMenu = new JPopupMenu();
                JMenuItem jMenuItemDel = new JMenuItem("删除");
                // 表格鼠标删除事件
                MouseAdapter mouseAdapter1 = new MouseAdapter(){
                    public void mouseClicked(MouseEvent event) {
                        if (event.getButton() == MouseEvent.BUTTON3) {
                            jPopupMenu.show(jt, event.getX(), event.getY());
                        }
                    }
                };
                // 单机删除
                jMenuItemDel.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        int index = jt.getSelectedRow();
                        new SqliteClass().del_likeDb(jt.getValueAt(index,0).toString());
                        jbmd.removeRow(index);
                    }
                });
                jt.add(jPopupMenu);
                jt.addMouseListener(mouseAdapter1);

                jPopupMenu.add(jMenuItemDel);

                jt.setModel(jbmd);

                jp.add(jcbb,BorderLayout.NORTH);
                jp.add(new JScrollPane(jt),BorderLayout.CENTER);

                jf.add(jp);
                jf.setVisible(true);
            }
        });
    }

    public void menuItemFontListener(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String[] fontNames= GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
                JFrame jffont = new JFrame("字体选择");
                jffont.setBounds(500,600,300,160);
                JPanel jPanel_mian = new JPanel(new GridLayout(2,1));
                JPanel jPanel = new JPanel(new GridLayout(3,2));
                JLabel jLabelfont = new JLabel("字体");
                jPanel.add(jLabelfont);
                JComboBox jComboBoxfont = new JComboBox(fontNames);
                jPanel.add(jComboBoxfont);
                JLabel jLabelCSS = new JLabel("样式");
                jPanel.add(jLabelCSS);
                JComboBox jComboBoxcss = new JComboBox();
                jComboBoxcss.addItem("普通");
                jComboBoxcss.addItem("斜体");
                jComboBoxcss.addItem("加粗");
                jComboBoxcss.addItem("加粗斜体");
                jPanel.add(jComboBoxcss);
                JLabel jLabelFontSize = new JLabel("字号");
                jPanel.add(jLabelFontSize);
                JComboBox jComboBoxSize = new JComboBox();
                for (int i =1 ;i<100;i++){
                    jComboBoxSize.addItem(i);
                }
                jPanel.add(jComboBoxSize);
                jPanel_mian.add(jPanel);
                JButton jButton = new JButton("确认");
                jButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        String font = jComboBoxfont.getSelectedItem().toString();
                        String style = jComboBoxcss.getSelectedItem().toString();
                        int css = 0;
                        if (style == "普通"){
                            css = Font.PLAIN;
                        }else if (style == "斜体"){
                            css = Font.ITALIC;
                        }else if (style == "粗体"){
                            css = Font.BOLD;
                        }else if (style == "加粗斜体"){
                            css =Font.BOLD+ Font.ITALIC;
                        }
                        int size = (int)jComboBoxSize.getSelectedItem();
                        settextFont(font,css,size);
                    }
                });
                jPanel_mian.add(jButton);
                jffont.add(jPanel_mian);
                jffont.setVisible(true);
            }
        });
    }

    public void menuItemsetColorListener(JMenuItem jMenuItem){
        jMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JColorChooser chooser=new JColorChooser();    //实例化颜色选择器
                Color color=chooser.showDialog(new JFrame(),"选取颜色",Color.lightGray );  //得到选择的颜色
                settextColor(color);
            }
        });
    }

    public void menuItemShenMi(JMenuItem jMenuItem) {
        jMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFrame jpd = new JFrame("口令");
                JTextField Jtxt = new JTextField(15);
                Jtxt.setBounds(0, 0, 20, 25);
                JPanel jp = new JPanel(new FlowLayout(FlowLayout.CENTER));
                JButton jb = new JButton("确认");
                JLabel jlb = new JLabel("提示:“无论贫穷还是富有。”");

                jp.add(Jtxt);
                jp.add(jb);
                jp.add(jlb);
                jpd.add(jp);
                jb.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (Jtxt.getText().equals("我愿意")) {
                            new SnakeFrame().mainStrat();
                        } else {
                            JOptionPane.showMessageDialog(null, "口令错误!");
                        }
                    }
                });
                jpd.setBounds(400, 400, 300, 100);
                jpd.setVisible(true);
            }
        });
    }

    public void selectmenuItem(JTextPane jTextArea){
        jTextArea.addMouseListener( new MouseAdapter() {
            public void mouseClicked(MouseEvent event){
                if (event.getButton() == MouseEvent.BUTTON3){
                    popupMenuselect.show(textArea,event.getX(),event.getY());
                }
            }
        });
    }

    public void likemenuItem(JTextArea jTextArea){
        jTextArea.addMouseListener( new MouseAdapter() {
            public void mouseClicked(MouseEvent event){
                if (event.getButton() == MouseEvent.BUTTON3){
                    popupMenuCadd.show(jTextArea,event.getX(),event.getY());
                }
            }
        });
    }

    public void selecttext(MenuItem menuItem){
        menuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String str = textArea.getSelectedText(); // 获取选中文字
//                    JOptionPane.showMessageDialog(null,str);
                List<String> select = new SqliteClass().sel(str);
                Random random = new Random();
                try {
                    for (int i = 0;i<20;i++){
                        if (select.size() == 1){
                            jTextSelect.append(select.get(random.nextInt(select.size())));
                            jTextSelect.append("\n");
                            jTextSelect.append("\n");
                            break;
                        }
                        jTextSelect.append(select.get(random.nextInt(select.size())));
                        jTextSelect.append("\n");
                        jTextSelect.append("\n");
                    }
                }catch (IllegalArgumentException e1){
                }finally {
                }
            }
        });
    }

    public void likeText(MenuItem menuItem){
        menuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String sc = jTextSelect.getSelectedText();
//              JOptionPane.showMessageDialog(null,sc);
                JFrame jf = new JFrame("添加标签");
                jf.setBounds(600,600,400,400);
                JTextField jt = new JTextField(8);
                jf.add(jt);
                JButton enter = new JButton("确认");
                enter.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        new SqliteClass().instlike(sc,jt.getText());
                    }
                });
                jf.add(enter);
                jf.setVisible(true);

            }
        });
    }

因为自己写着玩顺便为了new对象,实在是懒得弄mysql,不方便移植,使用sqlite,下面是数据库的一些操作

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;



public class SqliteClass extends org.sqlite.JDBC{


    public  void inst(List ist,String string){
        Connection conn =null;
        Statement statement = null;
        try{

            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库/建立连接

            statement = conn.createStatement();
            Iterator iter = ist.iterator();
            // 差一个判断是否已存在没写
            try{
                String sqlBookName = "INSERT INTO booktype (name) " +
                        "VALUES ('%s');".formatted(string);
                statement.executeUpdate(sqlBookName);
                while(iter.hasNext()){
                    Object o = iter.next();
                    if (o.toString() == "\n" && o.toString() == " "){
                        continue;
                    }else {
                        String sql = "INSERT INTO valueselect (neirong,type) " +
                                "VALUES ('%s','%s');".formatted(o.toString(),string);
                        statement.executeUpdate(sql);  //执行sql语句
                    }
                }
            }catch (Exception e){
                JOptionPane.showMessageDialog(null, "素材重复", "素材重复",JOptionPane.WARNING_MESSAGE);
            }finally {
                statement.close();
//            conn.commit();  //提交事务
                conn.close();
            }
        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e, "异常",JOptionPane.WARNING_MESSAGE);
        }
    }

    public  void instlike(String ist,String type){
        Connection conn =null;
        Statement statement = null;
        try{
            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库/建立连接

            statement = conn.createStatement();
            String sql = "INSERT INTO valueselect (neirong) " +
                    "VALUES ('%s');".formatted("        " + ist);
            statement.executeUpdate(sql);  //执行sql语句
            statement.close();
//            conn.commit();  //提交事务
            conn.close();
        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e, "异常",JOptionPane.WARNING_MESSAGE);
        }
    }

    public List sel(String str){

        Connection conn =null;
        Statement statement = null;
        List list = new ArrayList<>();
        try{
            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库test.db
            statement = conn.createStatement();
            String sql = "select neirong from valueselect where neirong like '%%%s%%';".formatted(str);
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()){
                String neirong = resultSet.getString("neirong");
                list.add(neirong);
            }
            resultSet.close();
            statement.close();
            conn.close();

        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e, "异常",JOptionPane.WARNING_MESSAGE);
        }finally {
            return list;
        }
    }

    public  void del_value(String str){
        Connection conn = null;
        Statement statement = null;
        List<String> list = new ArrayList<>();
        try{
            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库test.db
            statement = conn.createStatement();
            statement.executeUpdate("PRAGMA foreign_keys = ON;");
            String sql = "DELETE from booktype WHERE name = '%s';".formatted(str);
            statement.executeUpdate(sql);
            statement.close();
            conn.close();


        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e, "异常",JOptionPane.WARNING_MESSAGE);
        }
        finally {

        }

    }


    public  void del_list_sel(){
        Connection conn = null;
        Statement statement = null;
        List<String> list = new ArrayList<>();
        try{
            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库test.db
            statement = conn.createStatement();
            JFrame frame = new JFrame("选中记录");
            frame.setBounds(600,600,300,100);
            JPanel jPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
            JComboBox jComboBox = new JComboBox();
            jComboBox.setSelectedIndex(-1);
            JButton jbt = new JButton("确认");
            String sql = "select name from booktype;";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()){
                jComboBox.addItem(resultSet.getString("name"));
            }
            // 未写完
            jbt.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    new SqliteClass().del_value(jComboBox.getSelectedItem().toString());
                    JOptionPane.showMessageDialog(null, "删除成功", "提示",JOptionPane.WARNING_MESSAGE);
                }
            });
            jPanel.add(jComboBox);
            jPanel.add(jbt);
            frame.add(jPanel);
            frame.setDefaultCloseOperation(1);
            frame.setVisible(true);
            resultSet.close();
            statement.close();
            conn.close();
        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e, "异常",JOptionPane.WARNING_MESSAGE);
        }
        finally {

        }
    }

    public void selLikeAll(DefaultTableModel model){

        Connection conn =null;
        Statement statement = null;
        try{
            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库test.db
            statement = conn.createStatement();
            String sql = "select love,newtype from lililike;";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()){
                String neirong =resultSet.getString("love");
                String label = resultSet.getString("newtype");
                model.addRow(new Object[]{neirong,label});
            }

            resultSet.close();
            statement.close();
            conn.close();
        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e, "异常",JOptionPane.WARNING_MESSAGE);
        }
        finally {
        }
    }

    public ArrayList selLikeType(){
        Connection conn =null;
        Statement statement = null;
        ArrayList str =new ArrayList();
        try{
            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库/建立连接
            statement = conn.createStatement();
            String sql = "select newtype from lililike;";
            ResultSet rs = statement.executeQuery(sql);  //执行sql语句
            str.add("默认");
            while (rs.next()){
                str.add(rs.getString("newtype"));
            }
            statement.close();
//            conn.commit();  //提交事务
            conn.close();

        }catch (Exception e){
            JOptionPane.showConfirmDialog(null,"数据库连接失败",
                    "异常",JOptionPane.WARNING_MESSAGE);
        }finally {
            return str;
        }

    }

    public void selLikeTypeValue(DefaultTableModel model,String str){
        Connection conn =null;
        Statement statement = null;
        try{
            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库test.db
            statement = conn.createStatement();
            String sql = "select love,newtype from lililike where newtype = '%s';".formatted(str);
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()){
                String neirong =resultSet.getString("love");
                String label = resultSet.getString("newtype");
                model.addRow(new Object[]{neirong,label});
            }

            resultSet.close();
            statement.close();
            conn.close();
        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e, "异常",JOptionPane.WARNING_MESSAGE);
        }
        finally {
        }
    }

    public void del_likeDb(String str){
        Connection conn = null;
        Statement statement = null;
        try{
            Class.forName("org.sqlite.JDBC");   // 加载驱动
            conn = DriverManager.getConnection("jdbc:sqlite:CMFBOOK.db");  // 创建数据库test.db
            statement = conn.createStatement();
//            statement.executeUpdate("PRAGMA foreign_keys = ON;");
            String sql = "DELETE from lililike WHERE love = '%s';".formatted(str);
            statement.executeUpdate(sql);
            statement.close();
            conn.close();
        }catch (Exception e){
            JOptionPane.showMessageDialog(null, e, "删除失败",JOptionPane.WARNING_MESSAGE);
        }
        finally {
            JOptionPane.showMessageDialog(null, "删除成功", "异常",JOptionPane.WARNING_MESSAGE);
        }
    }



}

写完发现吊,这么多重复代码,后面得想办法整合一下··有大佬可以指点一个么······

文件操作类,也是一堆得重复代码···忧伤,网上嫖了好多,我自己已经记不清了。冥冥感谢。

import javax.swing.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FileClass {
    public static SqliteClass sqllite = new SqliteClass();

    public static String getTreePath() {
        String path = "0";
        try{
            JFileChooser jfile = new JFileChooser();
            jfile.setFileSelectionMode(1);
            int status = jfile.showOpenDialog(null);//显示打开的文件对话框
            if (status == 1) {
            } else {
                File f = jfile.getSelectedFile();//使用文件类获取选择器选择的文件
                path = f.getAbsolutePath();
            }
        }catch (IllegalArgumentException e){

        }finally {
            return path;
        }
    }

    public String getFilePath(){
        String str = null;
        try {
            JFileChooser jf = new JFileChooser();
            jf.setFileSelectionMode(0);
            int status = jf.showOpenDialog(null);
            if (status == 1){
            }else{
                str = jf.getSelectedFile().getAbsolutePath();
            }
        }catch (IllegalArgumentException e){

        }finally {
            return str;
        }

    }

    public static void newFile(){

    }

    public static String replaceBlank(String str) {
        String dest = "";
        if (str != null) {
            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
            Matcher m = p.matcher(str);
            dest = m.replaceAll("");
        }
        return dest;
    }


    public static void fileReader(){

        try{
            JFileChooser jfile = new JFileChooser();
            jfile.setFileSelectionMode(0);
            int status = jfile.showOpenDialog(null);//显示打开的文件对话框
            Path path = null;
            File f = null;
            if (status == 1) {
            } else {
                f = jfile.getSelectedFile();//使用文件类获取选择器选择的文件
                path = Paths.get(f.getAbsolutePath());
                String str = null;
            }
            if (path != null){
                byte[] data = Files.readAllBytes(path);
                String res = replaceBlank(new String(data,"gbk"));
                List<String> list = Arrays.asList(res.split("。"));
                sqllite.inst(list,f.getName());
            }
        }catch (IOException e){
            JOptionPane.showMessageDialog(null, e, "异常",JOptionPane.WARNING_MESSAGE);
        }
    }
}

读取目录生成树状Jtree,老实交代是嫖。再次感谢大拿们。

import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import java.io.File;

public class TreeClass {
    public JTree tree;
    public DefaultTreeModel newModel;
    public DefaultMutableTreeNode Node;
    public DefaultMutableTreeNode temp;

    public  DefaultMutableTreeNode traverseFolder(String path) {
        DefaultMutableTreeNode fujiedian = new DefaultMutableTreeNode(new File(path).getName());
        File file = new File(path);
        if (file.exists()) {
            File[] files = file.listFiles();
            if (files.length == 0) {
                if(file.isDirectory()) {//如果是空文件夹
                    DefaultMutableTreeNode dn=new DefaultMutableTreeNode(file.getName(), false);
                    return dn;
                }
            }else{
                for (File file2 : files) {
                    if (file2.isDirectory()) {
                        //是目录的话,生成节点,并添加里面的节点
                        fujiedian.add(traverseFolder(file2.getAbsolutePath()));
                    }else{
                        //是文件的话直接生成节点,并把该节点加到对应父节点上
                        temp=new DefaultMutableTreeNode(file2.getName());
                        fujiedian.add(temp);
                    }
                }
            }
        } else {//文件不存在
            return null;
        }
        return fujiedian;
    }
    //  删除事件没写····
    public void delTree(){

    }

}

接下来继续嫖的一个Jtable的自动换行,实现JTextArea的换行方法

import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import java.awt.*;

public class TableCellTextAreaRenderer extends JTextArea implements TableCellRenderer {

    public TableCellTextAreaRenderer() {
        setLineWrap(true);
        setWrapStyleWord(true);
    }

    public Component getTableCellRendererComponent(JTable table, Object value,
                                                   boolean isSelected, boolean hasFocus, int row, int column) {
        setFont(table.getFont());
        setText((value == null) ? "" : value.toString());
        // 计算当下行的最佳高度
        int maxPreferredHeight = 0;
        for (int i = 0; i < table.getColumnCount(); i++) {
            setText("" + table.getValueAt(row, i));
            setSize(table.getColumnModel().getColumn(column).getWidth(), 0);
            maxPreferredHeight = Math.max(maxPreferredHeight, getPreferredSize().height);
        }

        if (table.getRowHeight(row) != maxPreferredHeight)  // 少了这行则处理器瞎忙
            table.setRowHeight(row, maxPreferredHeight);
        table.setFont(new java.awt.Font("",0,15));
        setText(value == null ? "" : value.toString());
        return this;
    }
}

结束了,=-=,虽然有白嫖的代码把,好歹也是看懂才嫖的····。

诶,学了python,学了java,学了C.都会是半只脚进门。。。忧伤。也不知道学了干啥。。。。。

打算听基友的,搞搞Vue去,回头研究研究app怎么写,再看看鸿蒙的软件开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值