GUI编程(二)

2023-10-27

Swing

Swing是GUI(图形用户界面)开发工具包。

早期的AWT(抽象窗口工具包)组件开发的图形用户界面,要依赖本地系统,当把AWT组件开发的应用程序移植到其他平台的系统上运行时,不能保证其外观风格,因此AWT是依赖于本地系统平台的。

而使用Swing开发的Java应用程序,其界面是不受本地系统平台限制的,也就是说Swing开发的Java应用程序移植到其他系统平台上时,其界面外观是不会改变的。但要注意的是,虽然Swing提供的组件可以方便开发Java应用程序,但是Swing并不能取代AWT,在开发Swing程序时通常要借助与AWT的一些对象来共同完成应用程序的设计。

一、常用窗体

Swing窗体是Swing的一个组件,同时也是创建图形化用户界面的容器,可以将其它组件放置在窗体容器中。

1. JFrame框架窗体

JFrame窗体是一个容器,在Swing开发中我们经常要用到,它是Swing程序中各个组件的载体。

这里我们要把组件添加到容器container 中,而不是像Frame一样直接添加到frame中

package com.demo4;

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

public class TestJFrame {
    public void init(){
        //顶级窗口
        JFrame frame = new JFrame("JFrame");
        frame.setVisible(true);
        frame.setBounds(100,100,200,200);

        //设置文字
        JLabel label = new JLabel("Hello");
        //文本标签居中
        label.setHorizontalAlignment(JLabel.CENTER);

        // 获取一个容器
        Container container = frame.getContentPane();
        // 将标签添加至容器
        container.add(label);
        // 设置容器背景颜色
        container.setBackground(Color.pink);

        //关闭事件
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        //建立一个窗口
        new TestJFrame().init();
    }
}

常用的窗体关闭方式有四种:
“DO_NOTHING_ON_CLOSE” :什么也不做就将窗体关闭;
“DISPOSE_ON_CLOSE” :隐藏当前窗口,并释放窗体占有的其他资源。
“HIDE_ON_CLOSE” : 隐藏窗口的默认窗口关闭;
“EXIT_ON_CLOSE”:退出应用程序默认窗口关闭。

DISPOSE_ON_CLOSE在窗口被关闭的时候会dispose这个窗口。
如果你的程序没有其他线程在运行的话,当所有的窗口都被dispose了之后,JVM也会退出。
1.setDefaultCloseOperation(DISPOSE_ON_CLOSE);一个窗口点右上角×,只有该窗口会关闭
2.而setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);一个窗口点右上角×,软件的所有窗口都会关闭

2 .JDialog窗体

JDialog窗体是Swing组件中的对话框,继承了AWT组件中的java.awt.Dialog类。功能是从一个窗体中弹
出另一个窗体。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//主窗口
public class TestJDialog extends JFrame {
   public TestJDialog(){
       setVisible(true);
       setSize(700,500);
       setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

       Container container = this.getContentPane();
       //绝对布局
       getContentPane().setLayout(null);

       //按钮
       JButton button = new JButton("点击弹出一个对话框");
       button.setBounds(30,30,200,50);
       //监听按钮事件,点击按钮弹出弹窗
       button.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               //弹窗
               new MyDialog();
           }
       });

       container.add(button);

   }
    public static void main(String[] args) {
        new TestJDialog();
    }
}
//弹窗的窗口
class MyDialog extends JDialog{
    public MyDialog(){
        this.setVisible(true);
        this.setBounds(100,100,500,500);
        
        Container container = this.getContentPane();
        container.setLayout(null);

        container.add(new Label("Java"));
    }
}


二、标签组件

在Swing中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标。上面我们提到的JLabel就是这里的内容。

1. 标签

标签由JLabel类定义,可以显示一行只读文本、一个图像或带图像的文本。

JLabel lable = new JLabel();

2. 图标

Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。

图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics类提供的功能方法来创建。

在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。

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

//图标,接口,需要实现类
public class TestIcon extends JFrame implements Icon {

    private int width;
    private int height;

    public TestIcon(){}

    public TestIcon(int width, int height) {
        this.width = width;
        this.height = height;
    }

    public void init(){
        TestIcon testIcon = new TestIcon(15, 15);
        //图标放在标签,按钮上
        JLabel label = new JLabel("icon", testIcon, SwingConstants.CENTER);
        Container container = getContentPane();
        container.add(label);

        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        g.fillOval(x,y,width,height);

    }

    @Override
    public int getIconWidth() {
        return this.width;
    }

    @Override
    public int getIconHeight() {
        return this.height;
    }

    public static void main(String[] args) {
        new TestIcon().init();
    }
}

Swing中的图标除了可以绘制之外,还可以使用某个特定的图片创建。
利用javax.swing.ImageIcon类根据现有图片创建图标。

下面看一个实例,我们先在包下放一个图片(注意放置位置,不同位置路径不同),如下:
在这里插入图片描述

package com.demo4;

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class TestImageIcon extends JFrame {

    public TestImageIcon(){

        //获取图片的地址  从当前类的路径下获取
        URL url = this.getClass().getResource("Java.jpg");
        ImageIcon imageIcon = new ImageIcon(url);

        //JLabel label = new JLabel("ImageIcon");
        //label.setIcon(imageIcon);
        //label.setHorizontalAlignment(SwingConstants.CENTER);
		 JLabel label = new JLabel("ImageIcon", imageIcon, SwingConstants.CENTER);

        Container container = this.getContentPane();
        container.add(label);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        setBounds(100,100,200,200);

    }

    public static void main(String[] args) {
        new TestImageIcon();
    }

}

对于图片标签,我们经常将图片放置在标签上,用JLabel中的setIcon()方法即可,当然也可以在初始化JLabel对象时为标签指定图标,这需要获取一个Icon实例。
getResource()方法可以获得资源文件的URL路径,这里的路径是相对于前面的那个类的,所以可将该图片与该类放在同一个文件夹下;如果不在同一个文件夹下,需通过其它方法获取路径。

三、面板

面板也是一个容器,可作为容器容纳其他组件,但也必须被添加到其他容器中。

Swing中常用面板有JPanel面板和JScrollPane面板。

1. JPanel

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

public class JPanelDemo extends JFrame {
    public JPanelDemo(){
        Container container = this.getContentPane();
        container.setLayout(new GridLayout(2, 1, 10, 10)); // 整个容器为2行1列

        JPanel p1 = new JPanel(new GridLayout(1, 3)); // 初始化一个面板,设置1行3列的网格布局
        JPanel p2 = new JPanel(new GridLayout(1, 2)); // 初始化一个面板,设置1行2列的网格布局
        JPanel p3 = new JPanel(new GridLayout(2, 1)); // 初始化一个面板,设置2行1列的网格布局
        JPanel p4 = new JPanel(new GridLayout(3, 2)); // 初始化一个面板,设置3行2列的网格布局

        p1.add(new JButton("1"));
        p1.add(new JButton("1"));
        p1.add(new JButton("1"));

        p2.add(new JButton("2"));
        p2.add(new JButton("2"));
        
        p3.add(new JButton("3"));
        p3.add(new JButton("3"));

        p4.add(new JButton("4"));
        p4.add(new JButton("4"));
        p4.add(new JButton("4"));
        p4.add(new JButton("4"));
        p4.add(new JButton("4"));
        p4.add(new JButton("4"));

        container.add(p1);
        container.add(p2);
        container.add(p3);
        container.add(p4);

        setVisible(true);
        setSize(500,500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }


    public static void main(String[] args) {
        new JPanelDemo();
    }
}

2. JScrollPane

若遇到一个较小的容器窗体中显示一个较大部分内容的情况,可用JScrollPane面板。这是一个带滚动条的面板,就像平时浏览网页,经常遇到的滚动条一样。

如果需要在JScrollPane面板中放置多个组件,需将这多个组件放置在JPanel面板上,然后将JPanel面板作为一个整体组件添加在JScrollPane面板上。

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

public class JScrollPaneDemo extends JFrame {
    public JScrollPaneDemo(){
        Container container = getContentPane();

        //文本域
        JTextArea textArea = new JTextArea(20,50);
        textArea.setText("Java");

        //Scroll面板
        JScrollPane jScrollPane = new JScrollPane(textArea);

        container.add(jScrollPane);


        setVisible(true);
        setSize(500,500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {
        new JScrollPaneDemo();
    }
}

四、按钮组件

1. 图片按钮

JButton在之前的例子中已经出现多次,是较为常用的组件,用于触发特定动作。可以在按钮上显示文本标签,还可以显示图标。

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class JButtonDemo1 extends JFrame {
    public JButtonDemo(){
        Container container = getContentPane();
        URL resource = this.getClass().getResource("Java.jpg");
        ImageIcon imageIcon = new ImageIcon(resource);

        //将图标放在按钮上
        JButton button = new JButton();
        button.setIcon(imageIcon);
        button.setToolTipText("图片按钮");

        container.add(button);

        setVisible(true);
        setSize(500,500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {
        new JButtonDemo();
    }
}

2. 单选按钮

默认情况下,单选按钮显示一个圆形图标,通常在其旁放置一些说明性文字。当用户选中某个单选按钮后,按钮组中其它按钮将被自动取消,这时就需要按钮组(ButtonGroup)来将同组按钮放在一起,该按钮组中的按钮只能选择一个,而不在此按钮中的按钮不受影响。

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

public class JButtonDemo2 extends JFrame{

    public JButtonDemo2(){
        Container container = getContentPane();
        //单选框
        JRadioButton radioButton1 = new JRadioButton("1");
        JRadioButton radioButton2 = new JRadioButton("2");
        JRadioButton radioButton3 = new JRadioButton("3");

        //由于单选框只能选一个,进行分组
        //如果没有进行分组,可以同时选择多个
        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(radioButton1);
        buttonGroup.add(radioButton2);
        buttonGroup.add(radioButton3);

        container.add(radioButton1,BorderLayout.NORTH);
        container.add(radioButton2,BorderLayout.CENTER);
        container.add(radioButton3,BorderLayout.SOUTH);


        setVisible(true);
        setSize(500,500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new JButtonDemo2();
    }
}

3. 复选框

复选框是一个方块图标,外加一段描述性文字,与单选按钮的区别就是可以多选。每一个复选框都提供“选中”与“不选中”两种状态。

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

public class JButtonDemo3 extends JFrame {

    public JButtonDemo3(){
        Container container = getContentPane();
        JCheckBox checkBox1 = new JCheckBox("Java");
        JCheckBox CheckBox2 = new JCheckBox("C++");
        container.add(checkBox1,BorderLayout.NORTH);
        container.add(CheckBox2,BorderLayout.SOUTH);


        this.setVisible(true);
        this.setSize(500, 350);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {

        new JButtonDemo3();
    }
}

五、列表组件

1. 下拉列表(JComboBox)

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TestComboBox extends JFrame {
    public TestComboBox(){
        Container container = getContentPane();

        JComboBox comboBox = new JComboBox();
        comboBox.addItem(null);
        comboBox.addItem("正在上映");
        comboBox.addItem("即将上映");
        comboBox.addItem("下架");

        comboBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println(comboBox.getSelectedIndex()); //返回下标
                System.out.println(comboBox.getSelectedItem());  //返回内容
            }
        });

        container.add(comboBox);


        this.setVisible(true);
        this.setSize(500, 350);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


    }

    public static void main(String[] args) {
        new TestComboBox();

    }
}

2. 列表框(JList)

package com;

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


public class TestJList extends JFrame{
    public TestJList(){
        Container container = getContentPane();

        //生成列表的内容
        String[] str={"1","2","3"};
        JList jList = new JList(str);

        container.add(jList);

        this.setVisible(true);
        this.setSize(500, 350);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


    }

    public static void main(String[] args) {
        new TestJList();
    }

}

六、文本组件

1. 文本框(JTextField)

文本框用来显示或编辑一个单行文本

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

public class TestJTestField extends JFrame {
    public TestJTestField(){
        Container container = getContentPane();
        //这里由于布局问题,文本框的长度改变
        container.setLayout(new GridLayout(2,1));

        JTextField jTextField1 = new JTextField("Java");// 创建一个文本框,值为Java
        JTextField jTextField2 = new JTextField("C++",20);// 创建一个长度为20的文本框,值为C++

        container.add(jTextField1);
        container.add(jTextField2);

        this.setVisible(true);
        this.setSize(500, 350);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {
        new TestJTestField();
    }
}

2. 密码框(JPasswordField)

密码框与文本框的定义与用法类似,但会使用户输入的字符串以某种符号进行加密。

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

public class TestJPasswordField extends JFrame {
    public TestJPasswordField(){
        Container container = getContentPane();

        JPasswordField jPasswordField = new JPasswordField();
        jPasswordField.setEchoChar('$');  //char 类型 设置回显符号

        container.add(jPasswordField);

        this.setVisible(true);
        this.setSize(500, 350);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);



    }

    public static void main(String[] args) {
        new TestJPasswordField();
    }
}

3. 文本域(JTextArea)

文本域组件在上面JScrollPane面板的代码中已经出现

配合面板使用

package com.demo5;

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

public class JScrollPaneDemo extends JFrame {
    public JScrollPaneDemo(){
        Container container = getContentPane();

        //文本域
        JTextArea textArea = new JTextArea(20,50);
        textArea.setText("Java");

        //Scroll面板
        JScrollPane jScrollPane = new JScrollPane(textArea);

        container.add(jScrollPane);


        setVisible(true);
        setSize(500,500);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {
        new JScrollPaneDemo();
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GUI编程(二) 的相关文章

  • Java Swing BoxLayout 忽略 AlignmentX

    在下面的代码中 通过调用setAlignmentX with Component LEFT ALIGNMENT我希望在居中的滑块上获得左对齐的标签 由于某种原因 标签也居中 似乎与传递给 setAlignmentX 的值无关 我必须向 se
  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 简单 XML 框架:ElementMap 中的对象具有“类似内联”的行为

    我正在尝试在 Android 上序列化自定义对象的 Hashmap 以获得如下 xml
  • 如何在ArrayList中的特定位置插入对象

    假设我有一个大小为 n 的对象的 ArrayList 现在我想在特定位置插入另一个对象 假设在索引位置 k 大于 0 且小于 n 并且我希望索引位置 k 处及其之后的其他对象向前移动一个索引位置 那么有没有什么方法可以直接在Java中做到这
  • 将处理项目移至 Eclipse

    我已经在处理项目上工作了一段时间 现在想将其移至 Eclipse 中 我已经在 Eclipse 环境中安装了 Proclipse 我有很多扩展名为 pde 的文件 然而 Proclipse 文件都以 java 结尾 所有 pde 文件都存在
  • 是否可以使用 Java 读写 Parquet,而不依赖 Hadoop 和 HDFS?

    我一直在寻找这个问题的解决方案 在我看来 如果不引入对 HDFS 和 Hadoop 的依赖 就无法在 Java 程序中嵌入读写 Parquet 格式 它是否正确 我想在 Hadoop 集群之外的客户端计算机上进行读写 我开始对 Apache
  • Hashset - 创建 Set 后使对象相同

    如果我们在 HashSet 中添加两个不同的对象 可变的 然后通过调用 setter 更改对象的值 使它们相同 则大小仍然是 hashSet 的 2 我无法理解其原因 public static void main String args
  • JAXB 继承冲突 - 重新注释子类

    目前我的项目中有这样的环境 public abstract class Foo private List
  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • 对对象集合进行排序[重复]

    这个问题在这里已经有答案了 如果我有一个简单的字符串列表 List
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • 在Java中如何将字节数组转换为十六进制?

    我有一个字节数组 我希望该数组的每个字节字符串转换为其相应的十六进制值 Java中有没有将字节数组转换为十六进制的函数 byte bytes 1 0 1 2 3 StringBuilder sb new StringBuilder for
  • RxJava android mvp 单元测试 NullPointerException

    我是 mvp 单元测试的新手 我想对演示者进行一个非常基本的测试 它负责登录 我只想断言 view onLoginSuccess 这是演示者代码 public LoginPresenter LoginViewContract loginVi
  • ActiveMQ JNDI 查找问题

    尝试使用 JNDI 运行以下 ActiveMQ http activemq apache org jndi support html http ActiveMQ 20JNDI 并且我的 jboss server node lib 文件夹中有
  • 获取 Future 对象的进度的能力

    参考 java util concurrent 包和 Future 接口 我注意到 除非我弄错了 只有 SwingWorker 实现类才能启动冗长的任务并能够查询进度 这就引出了以下问题 有没有办法在非 GUI 非 Swing 应用程序 映
  • Spring - 如何在不匹配列名的情况下使用 BeanPropertyRowMapper

    我正在开发一个应用程序 该应用程序已使用行映射器从纯 JDBC 转换为 Spring 模板 我遇到的问题是数据库中的列与属性名称不匹配 这阻止我使用BeanPropertyRowMapper容易地 我看到一些关于在查询中使用别名的帖子 这会
  • java.lang.UnsatisfiedLinkError - android studio gradle 中的 NDK?

    文件夹结构 app main java jni Android mk Application mk hello jni c res 在构建 gradle apply plugin com android application androi
  • 如何使用eclipse调试JSP tomcat服务?

    我想使用 Eclipse IDE 调试器来调试单独运行的 JSP Struts Tomcat Hibernate 应用程序堆栈 如何设置 java JVM 和 eclipse 以便设置断点 监视变量值并查看当前正在执行的代码 我刚刚用谷歌搜
  • 在java中执行匿名pl/sql块并获取结果集

    我想执行匿名 PL SQL 并需要获取结果集对象 我得到了可以通过在 PL SQL 块内使用游标来完成的代码 但 PL SQL 块本身将以文本形式来自数据库 所以我无法编辑该 PL SQL 块 并且它只会返回两个值 其列名始终相同 它将返回
  • 从 InputStream 中删除换行符

    我喜欢从一个文件中删除所有换行符 对于 n 和 r n java io InputStream 在读取文件时 相应的方法如下所示 param target linkplain File return linkplain InputStrea

随机推荐

  • (c语言)输出Programming is fun!

    题目要求 输入 无 输出 Programming is fun 具体代码如下 include
  • 打印从1到最大的n位数

    链接 打印从1到最大的n位数 牛客题霸 牛客网 nowcoder com 描述 输入数字 n 按顺序打印出从 1 到最大的 n 位十进制数 比如输入 3 则打印出 1 2 3 一直到最大的 3 位数 999 1 用返回一个整数列表来代替打印
  • Hands-On Hyperledger Fabric——Fabric的证书(账号)体系

    文章目录 Fabric证书是什么 Fabric证书服务器 Fabric ca fabric ca server的初始化 fabric ca server 配置文件 fabric ca client 使用 将Fabric ca server绑
  • GPT分区规划与各分区作用解析

    1 GPT分区规划 安装用EFI引导的Windows 10前 手动为硬盘分区 推荐方案如下 序号 分区名 起始柱面 磁头 扇区 容量 MBR保留扇区 GPT分区表 1MB 0 ESP分区 0 32 33 96MB 空白 预留给扩展ESP时使
  • 【H5】 svg画贝塞尔曲线方法

    H5 svg画贝塞尔曲线方法 d属性M 起始坐标 L 结束坐标 H 水平线 V 垂直线 A 圆弧 Z 闭合路劲 C S Q T贝塞尔曲线大写为绝对坐标 具体的坐标位置 小写为相对坐标 相对起始坐标点的具体长度 A命令x 径y半径角度弧长 0
  • 关于虚拟机.vmdk与.ovf 磁盘装载问题

    与 vmdk磁盘装载相关的两种方式 0 前言 1 只有 vmdk文件 2 带有 ovf vmdk文件 0 前言 提一嘴 现在用的比较多的虚拟机创建或者拷贝方式有两种 第一种是iso光盘映像装载 第二种是OVF导入 分别为 ISO的装载方式最
  • build JAX from source code

    Building from source JAX documentation
  • visual studio:不能加载.vdproj

    总结 下载后关闭所有vs项目 重新打开目标工程 需要完成次扩展的后续安装任务 参考 https www cnblogs com hofmann p 11183457 htm
  • 122FPS,51.9mAP 超轻量关键点检测算法PP-TinyPose来啦!

    在人机交互场景中 机器可以识别人的手势 肢体动作 表情 你可知背后的核心技术是什么吗 没错 就是关键点检测技术 它能帮你实现精准的人机交互任务 如手势控制 智能健身 体感游戏等 还可以识别交通违规 打架斗殴 违规操作等异常行为 话不多说 我
  • DVWA——XSS(Dom low&medium)

    此文章只用于学习 请勿用作其他违法犯罪行为 以下部分文字内容以图片形式展示 因为JS代码打不上去 目录 前言 XSS攻击流程 XSS的危害 XSS的漏洞类型 JS基本语句 XSS Dom Low XSS Dom Medium 前言 XSS被
  • Ubantu扩展SWAP区,使用gparted,以及死机非热启动解决方法

    Ubantu扩展SWAP区 使用gparted 以及死机非热启动解决方法 Swap分区 强制重启 扩充SWAP Swap分区 Swap分区是用来扩展内存的 即使用一部分硬盘空间作为交换 个人认为电脑内存大于16G即不需要分配Swap空间 我
  • Python字符串替换的3种方法

    Python字符串替换笔记主要展示了如何在Python中替换字符串 Python中有以下几种替换字符串的方法 本文主要介绍前三种 replace方法 常用 translate方法 re sub方法 字符串切片 根据Python字符串切片方法
  • springboot + redis多数据源 + jedis集群模式

    最近有个项目需要redis支持多个集群 网上搜了下 发现有个开源的项目spring boot starter dynamic redis 代码写的挺好 可惜只有单机版的 于是fork了他的代码改了下 支持jedis集群模式 新代码昨天已提交
  • 如何用人工智能预测股票(完整项目)

    本文由 沈庆阳 所有 转载请与作者取得联系 前言 十分钟实现人工智能股价预测 是一个深度学习的练习项目 其通过机器学习算法 根据过去几年与某只股票相关的K线走势 公司相关报道的情感分析作为数据集 通过训练来得到可以预测股价的机器学习模型 并
  • VS2008, MFC 文件的操作4 - CFile类, CFileDialog类 方式 文本方式打开

    接上一节笔记 VS2008 MFC 文件的操作3 Win32 API 方式 文本方式打开 1 代码 及 点击 子菜单项 WriteFile 时候的可选文件 void Cvs2008 SX jiaocheng12View OnFileWrit
  • 【vscode代码片段增加和删除】

    目录 一 概述 二 详解 三 实例 一 概述 项目开发中 存在很多重复代码 可将其抽取出来定义成自己的代码片段 提高编码效率 实现快捷开发 二 详解 详解1 选择并打开代码片段文件 详解2 删除代码片段文件 代码片段文件创建后会一直保存在本
  • Java7对资源释放操作的简化

    学会使用finally释放资源 public class TryCatchResourceDemo public static void main String args try 这里面只能放置资源对象 用完会自动关闭 自动调用资源对象的c
  • 童年回忆——超级玛丽(内含源码inscode一键运行)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • RuoYi-Cloud版本限制一个账户只能在一个地方登陆

    RuoYi Cloud版本限制一个账户只能在一个地方登陆 一 前言 二 参考 三 代码实现 三 一 在ruoyi auth模块下的bootstrap yml文件下新增一个配置soloLogin用于限制多终端同时登录 三 二 我是在Cache
  • GUI编程(二)

    Swing Swing是GUI 图形用户界面 开发工具包 早期的AWT 抽象窗口工具包 组件开发的图形用户界面 要依赖本地系统 当把AWT组件开发的应用程序移植到其他平台的系统上运行时 不能保证其外观风格 因此AWT是依赖于本地系统平台的