当前位置: 首页 > news >正文

swing组件应用

 1. 组件概述

(1) 说明

        组件组成Java 的图形界面的各个元素,按照不同的功能,可分为 顶层容器中间容器基本组件。顶层容器为java.awt.Window的子类,有JFrame、JDialog等。中间容器和基础组件都为javax.swing.JComponent的子类,常用的中间容器有JPanel、ScrollPane、JSplitPane、JTabbedPane、JLayeredPane、JMenuBar、JToolBar、JPopupMenu、JInternalFrame等,常用的基础组件有JLabel、JButton、JRadioButton、JCheckBox、JToggleButton、JTextField、JPasswordField、JTextArea、JComboBox、JList、JProgressBar、JSlider等。

2. JFrame - 窗体

(1) 说明

        一个顶层的框架类,是屏幕上window的对象,能够最大化、最小化、关闭。JFrame好比窗户框,其他容器(例如JPanel )就是玻璃。

(2)示例

1        JFrame jFrame = new JFrame();//设置窗口大小,也可通过setBounds设置位置和大小,可以使用pack方法设置最佳大小。jFrame.setSize(1000, 800);//窗口居中显示,也可通过setLocation或setBounds方法设置显示位置。jFrame.setLocationRelativeTo(null);//标题jFrame.setTitle("标题");//图标jFrame.setIconImage(null);//设置默认窗口关闭操作,常用直接退出程序jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//菜单栏加到窗口中jFrame.setJMenuBar(ModuleUtils.initJMenuBar());//设置窗口是否可调整大小,默认窗口可调整大小jFrame.setResizable(false);//撤销当前窗口并释放所有使用的资源,可用于页面跳转关闭当前窗口//jFrame.dispose();//往窗口中添加组件,JFrame默认为边界布局,可分别往上下左右中5部分添加组件jFrame.add(new JLabel("组件"), BorderLayout.WEST);//设置窗口是否可见,默认窗口是不可见的jFrame.setVisible(true);

3. JDialog - 对话框

(1) 说明
        主要用于一个窗体中弹到另一个窗体中。

(2) 示例

        JButton jButton=new JButton("弹框");jButton.setSize(100,50);jButton.addActionListener(e->{//模态对话框,在不处理当前对话框之前无法进行其他操作。JDialog dialog = new JDialog(jFrame,"对话框",true);dialog.setSize(200, 300);//设置其大小dialog.setLocation(100, 100);//设置其位置dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);//设置关闭模式dialog.add(new JTextField());//设置组件dialog.setVisible(true);//设置可见});

4. JApplet - applet框

(1) 说明

        JApplet 类是用来建立 java 小应用程序用的。

(2) 示例

5. JPanel - 面板

(1) 说明

        JPanel 是 Java图形界面的面板容器类,是一种轻量级容器,可以加入到JFrame窗体中。JPanel默认的布局管理器是FlowLayout,功能是对窗体上的各种控件进行组合。

(2) 示例

        //新建面板JPanel jPanel=new JPanel();jPanel.setBounds(50,50,300,200);//在指定位置和大小,绝对布局有效jPanel.setLayout(new FlowLayout(FlowLayout.LEFT));//设置布局,默认为居中流布局jPanel.setBackground(Color.BLUE); //设置背景色jPanel.add(new JButton("按钮"));//添加组件jPanel.setBorder(BorderFactory.createLineBorder(Color.RED,2));//设置边框

6. JScrollPane - 滚动面板

(1) 说明

        JScrollPane是一个带有滚动条的面板,面板上只能添加一个组件。如果想向JScrollPane面板中添加多个组件,应该先将多个组件添加到某个组件中,然后将这个组件添加到JScrollPane中。

(2) 示例

        //新建面板JScrollPane jScrollPane=new JScrollPane ();//新建组件,滚动面板需要展示的组件JPanel jPanel=new JPanel();jPanel.setPreferredSize(new Dimension(500,1000));jScrollPane.setBounds(50,50,300,200);//在指定位置和大小,绝对布局有效jScrollPane.setViewportView(jPanel);//滚动面板展示的组件组件jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置水平滚动条策略jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//设置垂直滚动条策略jScrollPane.setBorder(BorderFactory.createLineBorder(Color.RED,2));//设置边框jFrame.add(jScrollPane);

7. JLayeredPane - 分层面板

(1) 说明

        为容器添加了深度,允许组件在需要时互相重叠。

(2) 示例

        //新建面板JLayeredPane  jLayeredPane=new JLayeredPane ();jLayeredPane.setLayout(null);//新建组件,滚动面板需要展示的组件JPanel jPanel1=new JPanel();jPanel1.setBounds(10,10,100,100);jPanel1.setBackground(Color.BLUE);JPanel jPanel2=new JPanel();jPanel2.setBounds(60,60,100,100);jPanel2.setBackground(Color.RED);JPanel jPanel3=new JPanel();jPanel3.setBounds(110,110,100,100);jPanel3.setBackground(Color.GREEN);//可设置组件层级,最大数的组件在最外层.默认放到层内最底部jLayeredPane.add(jPanel1,new Integer(2));jLayeredPane.add(jPanel2,new Integer(3));jLayeredPane.add(jPanel3,new Integer(1));jFrame.add(jLayeredPane);

8. JRootPane - 根面板

(1) 说明

        该面板是在 JFrame 窗体创建时就默认添加进来的,是所有其他面板的载体或父级,他覆盖窗体的除标题栏和边条之外的整个表面。根面板默认是不可见的。根面板负责管理其他面板(层面板,玻璃面板),如使其他面板覆盖整个JFrame 窗体等。

(2) 示例

9. JInternalPane - 内部窗口

(1) 说明

(2) 示例

10. JTabbedPane - 选项卡窗格

(1) 说明

        JTabbedPane可以用于创建具有多个功能选项卡的应用程序界面,每个选项卡都有一个标题和一个面板,用户可以点击选项卡来切换到相应的面板。

(2) 示例

        JPanel jPanel1 = new JPanel();//选项卡1容器JPanel jPanel2 = new JPanel();//选项卡2容器//定义选项卡,可设置选项卡标签位置及布局策略。默认:TOP, WRAP_TAB_LAYOUTJTabbedPane jTabbedPane=new JTabbedPane(JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT);//添加选项卡jTabbedPane.addTab("选项卡1",jPanel1);jTabbedPane.addTab("选项卡2",jPanel2);jTabbedPane.setSelectedIndex(1); // 设置指定索引选项卡被选中jTabbedPane.setEnabledAt(0, false); // 设置指定索引选项卡不可用jTabbedPane.addChangeListener(e->{//切换事件// 获得被选中选项卡的索引int selectedIndex = jTabbedPane.getSelectedIndex();// 获得指定索引的选项卡标签String title = jTabbedPane.getTitleAt(selectedIndex);System.out.println(title);});jFrame.add(jTabbedPane);

11. JSplitPane - 分割面板

(1) 说明

        JSplitPane 用于创建可拖动的分割面板,将一个容器分割为两个可调整大小的子面板。它提供了用户界面中显示和控制两个组件的分割线,可以让用户根据需要调整两个子面板的大小。

(2) 示例

        JSplitPane jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,new JLabel("左"),new JLabel("右"));jSplitPane.setPreferredSize(new Dimension(100,100));jSplitPane.setContinuousLayout(false);//设置是否连续重新显示组件,jSplitPane.setDividerSize(10);//分割线宽度jSplitPane.setDividerLocation(30);//jSplitPane.setLeftComponent(Componentcomp); //将组件设置到分隔条的左边。//jSplitPane.setTopComponent(Component comp);// 将组件设置到分隔条的上面。//jSplitPane.setRightComponent(Component comp);//将组件设置到分隔条的右边。//jSplitPane.setBottomComponent(Component comp);//将组件设置到分隔条的下面。

12. JMenuBar - 菜单栏

(1) 说明

        JMenuBar是用于制作菜单栏时用到的一个组件。菜单组件是由多个类组成的,主要有:JMenuBar(菜单栏)、JMenu(菜单)、JMenuItem(菜单项)和JPopupMenu(弹出菜单).每个菜单组件都包含一个菜单栏,每个菜单栏又包含若干个菜单,每个菜单包含若干个菜单项。菜单项的作用与按钮类似,当用户单击时产生一个命令动作。

(2) 示例

        JMenuBar jMenuBar=new JMenuBar(); //创建菜单栏JMenu jMenu1=new JMenu("一级菜单");JMenu jMenu2=new JMenu("二级菜单");JMenuItem jMenuItem=new JMenuItem("菜单项");jMenuItem.addActionListener(e->{//TODO 菜单项点击事件});jMenu1.add(jMenu2);//一级菜单添加二级菜单jMenu2.add(jMenuItem);//二级菜单添加菜单项jMenuBar.add(jMenu1);//菜单栏添一级加菜单jFrame.setJMenuBar(jMenuBar);//在窗口里添加菜单栏
        //复选框、单选框菜单项JMenu jMenu=new JMenu("菜单");JCheckBoxMenuItem jCheckBoxMenuItem=new JCheckBoxMenuItem("复选框");JRadioButtonMenuItem jRadioButtonMenuItem=new JRadioButtonMenuItem("单选框");JMenuItem jMenuItem=new JMenuItem("按钮");jMenu.add(jCheckBoxMenuItem);jMenu.add(jRadioButtonMenuItem);jMenu.add(jMenuItem);jMenuBar.add(jMenu);jPanel.add(jMenuBar);

13. JPopupMenu - 弹出式菜单

(1) 说明

        弹出菜单是非常常见的一种控件。它通常由鼠标右击事件触发,比如在windows系统桌面上右击时,会弹出一个包含“刷新”、“属性”等菜单的弹出菜单。

(2) 示例

        JPanel jPanel=new JPanel();//弹框菜单JPopupMenu jPopupMenu = new JPopupMenu("Edit");//添加菜单及菜单项,中间都为菜单,最后一级为菜单项,可绑定事件JMenu jMenu=new JMenu("粘贴");JMenuItem jMenuItem1 = new JMenuItem("复制");JMenuItem jMenuItem2 = new JMenuItem("粘贴文本");JMenuItem jMenuItem3 = new JMenuItem("粘贴原格式文本");jMenu.add(jMenuItem2);jMenu.add(jMenuItem3);jPopupMenu.add(jMenuItem1);jPopupMenu.add(jMenu);//为窗口添加鼠标事件,点击右键在点击位置显示弹框菜单jFrame.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {if(e.getButton()==MouseEvent.BUTTON3){//鼠标点击右键//在点击位置弹出菜单jPopupMenu.show(jFrame,e.getX(),e.getY());}}});//添加到指定容器jPanel.add(jPopupMenu);

14 JToolBar - 工具栏

(1) 说明

        JToolBar 提供了一个用来显示常用的控件(按钮)的组件,而且可以在程序的主窗口之外浮动或是托拽。

(2) 示例

        //创建工具条,设置名称、方向。JToolBar jToolBar=new JToolBar("工具条",SwingConstants.HORIZONTAL);jToolBar.add(new JButton("功能1"));jToolBar.addSeparator();设置分隔jToolBar.add(new JButton("功能2"));jToolBar.setBackground(Color.lightGray);//背景色

15. JLabel - 标签

(1) 说明

        JLabel组件用来显示文本和图像,可以只显示其一种,也可以同时显示。

(2) 示例

        JLabel jLabel = new JLabel("内容");jLabel.setSize(400,300);BufferedImage img = ImageIO.read(new File("D:\\pictures\\12.jpg"));Image image = img.getScaledInstance(jLabel.getWidth(), jLabel.getHeight(), Image.SCALE_SMOOTH);jLabel.setIcon(new ImageIcon(image));//设置和JLabel等大的图片jLabel.setForeground (Color.BLUE);//设置字体颜色jLabel.setFont (new Font("宋体", Font.BOLD, 30));//设置字体风格、大小jLabel.setBorder (BorderFactory.createLineBorder(Color.GREEN));//设置组件JLabel标签的边框线jLabel.setCursor (new Cursor(Cursor.HAND_CURSOR));//设置当鼠标触碰标签时,鼠标的样式。jLabel.setOpaque (true);//关闭透明度jLabel.setBackground (Color.yellow);//设置背景,需要将透明度关闭// 设置文本相对于图片的位置(文本默认在图片右边垂直居中)jLabel.setHorizontalTextPosition (SwingConstants.RIGHT);jLabel.setVerticalTextPosition (SwingConstants.CENTER);// 设置标签内容(在标签内)的对其方式(默认左对齐并垂直居中)jLabel.setHorizontalAlignment(SwingConstants.CENTER);jLabel.setVerticalAlignment( SwingConstants.CENTER);jLabel.setIconTextGap(10);// 设置图片和文本之间的间隙jLabel.setToolTipText("提示");// 当鼠标移动到组件上时显示的提示文本jLabel.setVisible(true);// 设置组件是否可见jLabel.setMinimumSize(new Dimension(10,2));// 设置组件的 最小 大小jLabel.setMaximumSize(new Dimension(200,40));// 设置组件的 最大 大小jPanel.add(jLabel);

16. JButton - 按钮

(1) 说明

        JButton组件是最简单的按钮组件,在按下和释放2个状态之间进行切换,可以通过捕捉按下并释放的动作执行一些操作,从而完成和用户之间的交互。

(2) 示例

        JPanel jPanel = new JPanel();//按钮三种状态图标Image image1 = ImageIO.read(new File("D:\\pictures\\3.png")).getScaledInstance(100, 50, Image.SCALE_SMOOTH);Image image2 = ImageIO.read(new File("D:\\pictures\\2.png")).getScaledInstance(100, 50, Image.SCALE_SMOOTH);Image image3 = ImageIO.read(new File("D:\\pictures\\4.png")).getScaledInstance(100, 50, Image.SCALE_SMOOTH);JButton jButton=new JButton("点击");jButton.setPreferredSize(new Dimension(100,50));//设置首选大小// 设置文本相对于图片的位置(文本默认在图片右边垂直居中)jButton.setHorizontalTextPosition (JButton.CENTER);jButton.setVerticalTextPosition(JButton.CENTER);jButton.setIcon(new ImageIcon(image1));//鼠标未在按钮上显示的图标。jButton.setPressedIcon(new ImageIcon(image2));//鼠标按下时显示的图标。jButton.setRolloverIcon(new ImageIcon(image3));//鼠标经过时的图标。jButton.setBorderPainted(false);//是否显示边框jButton.setContentAreaFilled(true);//是否内容区填充jButton.setIconTextGap(10);//设置图片与文本间距jButton.setFocusPainted(false);//是否绘制焦点(例如浅色虚线框或者加粗的边框表明按钮当前有焦点)。jButton.setMnemonic(KeyEvent.VK_A);//设置快捷建,ALT+A 可点击按钮jButton.setToolTipText("提示");jButton.setFont(new Font("黑体",Font.PLAIN,24));jButton.setMargin(new Insets(20,20,20,20));//设置内边距jButton.setEnabled(true);//是否启用,默认为true//jButton.doClick();//点击按钮jButton.addActionListener(e->{System.out.println("点击按钮");});jPanel.add(jButton);

17. JToggleButton - 切换按钮

(1) 说明

        JToggleButton为开关按钮,是 JRadioButton, JCheckBox 的父类,主要实现一个按钮的两种状态(选中 和 未选中)来实现开关切换的效果。

(2) 示例

        JToggleButton jToggleButton=new JToggleButton("状态");jToggleButton.setSelected(true);//选中状态jToggleButton.setEnabled(false);//是否启用jToggleButton.setIcon(new ImageIcon());//关闭显示图标jToggleButton.setPressedIcon(new ImageIcon());//打开显示图标jToggleButton.setDisabledIcon(new ImageIcon());//禁用显示图标jFrame.add(jToggleButton);

18. JRadioButton - 单选按钮

(1) 说明

        JRadioButton为单选按钮,可以在给定的多个选择项中选择一个,并且只能选择一个。

(2) 示例

        //创建单选按钮JRadioButton jRadioButton1 = new JRadioButton("选项1");JRadioButton jRadioButton2 = new JRadioButton("选项2");//单选按钮设置按钮组,可实现单选联动ButtonGroup group = new ButtonGroup();group.add(jRadioButton1);group.add(jRadioButton2);jRadioButton1.addActionListener(e->{JRadioButton jRadioButton = (JRadioButton) e.getSource();//TODO 可通过按钮选中状态设置变量获取单选按钮选中值});//加到指定容器中jFrame.add(jRadioButton1);jFrame.add(jRadioButton2);

19. JCheckBox - 复选框

(1) 说明

        JCheckBox 为复选按钮,可以在选中与不选择之间切换,多个时可以多选。

(2) 示例

        //复选框JCheckBox jCheckBox = new JCheckBox("选项");//添加状态改变事件监听jCheckBox.addItemListener(e -> {JCheckBox jCheck = (JCheckBox) e.getSource();System.out.println(jCheck.isSelected());});//加到指定容器中jFrame.add(jCheckBox);

20. JTextField - 文本框

(1) 说明

        JTextField 是一个轻量级组件,它允许编辑单行文本。

(2) 示例

        JPanel jPanel = new JPanel();JTextField jTextField=new JTextField();jTextField.setPreferredSize(new Dimension(200,40));jTextField.setText("内容");jTextField.setSelectedTextColor(Color.BLUE); //文本选中后的颜色jTextField.setForeground(Color.RED);//字体颜色jTextField.setCaretColor(Color.DARK_GRAY);//设置光标颜色jTextField.setDisabledTextColor(Color.YELLOW);//设置文本不可用时颜色jTextField.setHorizontalAlignment(JTextField.RIGHT);//设置文本对齐jTextField.setFont(new Font("Serief", Font.BOLD, 30));jTextField.setEditable(false);//设置是否可编辑String text = jTextField.getText();//获取文本框文本jTextField.addFocusListener(new FocusListener() {@Overridepublic void focusGained(FocusEvent e) {System.out.println("获得焦点");}@Overridepublic void focusLost(FocusEvent e) {System.out.println("失去焦点");}});jTextField.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {System.out.println("输入:"+e.getKeyChar());}@Overridepublic void keyPressed(KeyEvent e) {System.out.println("按下:"+e.getKeyChar());}@Overridepublic void keyReleased(KeyEvent e) {System.out.println("放开:"+e.getKeyChar());}});jTextField.getDocument().addDocumentListener(new DocumentListener() {@Overridepublic void insertUpdate(DocumentEvent e) {System.out.println("新增");}@Overridepublic void removeUpdate(DocumentEvent e) {System.out.println("删除");}@Overridepublic void changedUpdate(DocumentEvent e) {System.out.println("修改");}});jPanel.add(jTextField);

21. JPasswordField - 密码框

(1) 说明

        JPasswordField是密码框,继承自 JTextField,只是显示输入的内容时用特定的字符替换显示(例如 * 或 ●),用法和 JTextField 基本一致。

(2) 示例

        JPanel jPanel = new JPanel();JPasswordField jPasswordField=new JPasswordField();jPasswordField.setPreferredSize(new Dimension(200,40));jPasswordField.setText("内容");jPasswordField.setSelectedTextColor(Color.BLUE); //文本选中后的颜色jPasswordField.setForeground(Color.RED);//字体颜色jPasswordField.setCaretColor(Color.DARK_GRAY);//设置光标颜色jPasswordField.setDisabledTextColor(Color.YELLOW);//设置文本不可用时颜色jPasswordField.setHorizontalAlignment(JTextField.RIGHT);//设置文本对齐jPasswordField.setFont(new Font("Serief", Font.BOLD, 30));jPasswordField.setEditable(true);//设置是否可编辑char[] password = jPasswordField.getPassword();//获取密码字节数组jPasswordField.setEchoChar('*');//设置密码框默认显示的密码字符jPasswordField.addFocusListener(new FocusListener() {@Overridepublic void focusGained(FocusEvent e) {System.out.println("获得焦点");}@Overridepublic void focusLost(FocusEvent e) {System.out.println("失去焦点");}});jPasswordField.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {System.out.println("输入:"+e.getKeyChar());}@Overridepublic void keyPressed(KeyEvent e) {System.out.println("按下:"+e.getKeyChar());}@Overridepublic void keyReleased(KeyEvent e) {System.out.println("放开:"+e.getKeyChar());}});jPasswordField.getDocument().addDocumentListener(new DocumentListener() {@Overridepublic void insertUpdate(DocumentEvent e) {System.out.println("新增");}@Overridepublic void removeUpdate(DocumentEvent e) {System.out.println("删除");}@Overridepublic void changedUpdate(DocumentEvent e) {System.out.println("修改");}});jPanel.add(jPasswordField);

22. JTextArea - 文本域

(1) 说明

        JTextArea 是一个显示纯文本的多行区域,它能接收多行文本的输入,使用JTextArea构造方法创建对象时可以设定区域的行数、列数。

(2) 示例

        JPanel jPanel = new JPanel();JTextArea jTextArea = new JTextArea(12, 34);JScrollPane jScrollPane = new JScrollPane(jTextArea);jTextArea.setEditable(false); // 设置文本域不可编辑jTextArea.setLineWrap(true);//是否自动换行jTextArea.append("文本\n");//追加文本jTextArea.insert("1234",1);//在指定位置插入文本jTextArea.replaceRange("6666",0,1);//替换指定区间的字符串jTextArea.setText("设置文本");//设置文本,会清空已有文本jPanel.add(jScrollPane);

23. JTextPane - 简单文本编辑器

(1) 说明

        JTextPane 是JEditorPane 的子类,是一个可以编辑和显示html,rtf和普通文本的富文本组件。

(2) 示例

        JPanel jPanel = new JPanel();//样式上下文,可以添加多种样式,用时直接从上下文中取StyleContext sc = StyleContext.getDefaultStyleContext();Style style = sc.addStyle("Style",null);SimpleAttributeSet set = new SimpleAttributeSet();//文档样式属性对象StyleConstants.setForeground(set, Color.RED);//设置文本颜色StyleConstants.setFontSize(set, 30);//设置文本大小StyleConstants.setAlignment(set, StyleConstants.ALIGN_LEFT);//设置文本对齐方式StyleConstants.setLeftIndent(set,10);//设置左边距StyleConstants.setRightIndent(set,10);//设置右边距style.addAttributes(set);//样式添加属性DefaultStyledDocument doc = new DefaultStyledDocument(sc);JTextPane jTextPane = new JTextPane(doc);jTextPane.setText("内容");jTextPane.setPreferredSize(new Dimension(400,300));//设置文本面板大小
//        doc.setParagraphAttributes(0, doc.getLength(), set, false);//设置段落格式,可设置从哪到多长的文本doc.insertString(doc.getLength(), "插入文本",sc.getStyle("Style"));//在指定位置插入文本,可带样式,doc.getLength()为文本后。jPanel.add(jTextPane);

24. JEditorPane - 辑各种内容的文本组件

(1) 说明

        JEditorPane的最主要功能在于展 现不同类型的文件格式内容,支持的文件类型有三种:第一种是纯文本类型,其类型的表示法为"text/plain",这种类型的文件就是我们最常使用的txt文件,这类型的文件可以用记事本或WordPad等文书编辑软件来编辑。第二种是RTF类型,其表示为"text/rtf",这种类型的文件特色是能对文字内容做字体缩放、变形、上色等特殊效果。第三类是HTML类型,其表示法为"text/html",这类文件的特色除了在对字体效果的表现之外还具有在文件 内加入图片、超级链接等相关功能。

(2) 示例

        JEditorPane jEditorPane  = new JEditorPane("https://www.w3cschool.cn/");jEditorPane.setEditable(false);     //请把editorPane设置为只读,不然显示就不整齐jEditorPane.setContentType("text/html");//text/plain(纯文本)、text/rtf(rtf文本)、text/html(html文本)//超链接事件jEditorPane.addHyperlinkListener((HyperlinkEvent event) -> {if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {try {jEditorPane.setPage(event.getURL());} catch (IOException e) {e.printStackTrace();}} else if (event.getEventType() == HyperlinkEvent.EventType.ENTERED) {System.out.println("click this link");} else if (event.getEventType() == HyperlinkEvent.EventType.EXITED) {System.out.println("Ready");}});jPanel.add(jEditorPane);

25. JComboBox - 下拉列表框

(1) 说明

        JComboBox组件被称为下拉框或者组合框,它将所有选项折叠在一起,默认显示的是第一个添加的选项。当用户单击下拉框时,会出现下拉式的选择列表,用户可以从中选择其中一项并显示。该组件分为可编辑和不可编辑两种形式,对于不可编辑的下拉框,用户只能选择现有的选项列表。对于可编辑的下拉框,用户既可以选择现有的选项列表,也可以自己输入新的内容,应注意自己输入的内容只能作为当前项显示,并不会添加到下拉框的选项列表中。

(2) 示例

        //下拉框数据DefaultComboBoxModel boxModel = new DefaultComboBoxModel();boxModel.addElement("Apple");boxModel.addElement("Grapes");boxModel.addElement("Mango");//下拉框JComboBox jComboBox = new JComboBox(boxModel);//设置选中值jComboBox.setSelectedIndex(0);//设置是否可编辑,默认不可编辑jComboBox.setEditable(true);//jComboBox.setSelectedItem("Mango");//添加到滚动条面板里JScrollPane jScrollPane = new JScrollPane(jComboBox);// 获取选中值,可用于在其他组件事件内获取选中的值Object selectedItem = jComboBox.getSelectedItem();//加到指定容器中jFrame.add(jScrollPane);

26. JList - 列表

(1) 说明

       JList为列表框可以显示一组数据项,从中可选择一个或多个数据。

(2) 示例

        JPanel jPanel = new JPanel();// 滚动列表数据DefaultListModel listModel = new DefaultListModel();listModel.addElement("Apple");listModel.addElement("Grapes");listModel.addElement("Mango");//滚动列表JList jList = new JList(listModel);//设置列表的选择模式。SINGLE_SELECTION:单一的选择;SINGLE_INTERVAL_SELECTION:单段选择;MULTIPLE_INTERVAL_SELECTION:多段选择jList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);//默认选中项jList.setSelectedIndex(1);//显示出来的数据条数jList.setVisibleRowCount(2);//添加到滚动条面板里JScrollPane jScrollPane = new JScrollPane(jList);//选择事件jList.addListSelectionListener(e -> {if(!e.getValueIsAdjusting()){//判断是否是一系列多个事件中的一个,防止多次调用//获取选中值集合,可用于在其他组件事件内获取选中的值List list = jList.getSelectedValuesList();System.out.println(list);}});//加到指定容器中jPanel.add(jScrollPane);

27. JProgressBar - 进度条

(1) 说明

        JProgressBar进度条是一种以可视化形式显示某些任务进度的组件。

(2) 示例

        //进度条,设置范围JProgressBar progressBar = new JProgressBar(0, 100);//设置当前值,可不断修改该值使进度条改变progressBar.setValue(0);//是否显示百分比,通过setString方法设置后失效progressBar.setStringPainted(true);//加到指定容器中jFrame.add(progressBar);

28. JTable - 表格

(1) 说明

        JTable 是用来显示和编辑常规二维单元表。

(2) 示例

        //静态加载表格数据//表头Object[] booksColumn = { "图书名称", "图书作者", "图书价格" };// 二维表格数据Object[][] dataset = { { "java", "brucl", "85" }, { "javascript", "lunce", "54" } };//创建表格JTable jTable = new JTable(dataset, booksColumn);//表格放到滚动条面板里JScrollPane scrollPane = new JScrollPane(jTable);//加到指定容器中jFrame.add(scrollPane);
        //动态加载表格数据// 表头(列名)Vector<String> columnNames = new Vector<String>();columnNames.add("编号");columnNames.add("姓名");columnNames.add("性别");columnNames.add("创建时间");// 创建表格模型DefaultTableModel dataModel = new DefaultTableModel(columnNames, 0);// 创建JTable表格组件JTable jTable = new JTable(dataModel);//表格放到滚动条面板里JScrollPane scrollPane = new JScrollPane(jTable);//滚动条面板放到窗口中jFrame.add(scrollPane, BorderLayout.CENTER);//加载数据按钮,可动态加载数据JButton jButton = new JButton("加载数据");jButton.addActionListener(e -> {Vector<Vector<Object>> rowData = new Vector<Vector<Object>>();for (int i = 1; i <= 20; i++) {Vector<Object> rowItem = new Vector<Object>();rowItem.add(i);rowItem.add("用户" + i);rowItem.add(i % 2 == 1 ? "男" : "女");rowItem.add(new java.util.Date());rowData.add(rowItem);}// 绑定结果dataModel.setDataVector(rowData, columnNames);});jFrame.add(jButton, BorderLayout.WEST);

29. JTree - 树

(1) 说明

        JTree 组件被用来以树的形式显示数据,一层套一层,看起来清晰明了,使用户很方便地就了解到各个节点之间的层次关系,可以很容易地找到相关的数据。

(2) 示例

        JPanel jPanel = new JPanel();//构造树结点数据节点DefaultMutableTreeNode root = new DefaultMutableTreeNode("中国");DefaultMutableTreeNode r1 = new DefaultMutableTreeNode("安徽");DefaultMutableTreeNode r2 = new DefaultMutableTreeNode("江苏");DefaultMutableTreeNode o1 = new DefaultMutableTreeNode("合肥");DefaultMutableTreeNode o2 = new DefaultMutableTreeNode("芜湖");DefaultMutableTreeNode o4 = new DefaultMutableTreeNode("南京");DefaultMutableTreeNode o5 = new DefaultMutableTreeNode("苏州");root.add(r1);root.add(r2);r1.add(o1);r1.add(o2);r2.add(o4);r2.add(o5);JTree jTree = new JTree(root);jTree.setEditable(true);//是否双击可编辑节点jTree.putClientProperty( "JTree.lineStyle", "Angled");//设置结点连接线样式,None没有连接线,Horizontal水平分割线,Angled直角线连接jTree.setShowsRootHandles(false);//根根结点是否有"展开、折叠"图标jTree.setRootVisible(true);//是否显示根结点jPanel.add(jTree);JButton jButton=new JButton("点击");jButton.addActionListener(e -> {//1.得到当前选中 的结点DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
//            DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新结点");
//            selectedNode.add(newNode);//创建及添加新子结点selectedNode.removeFromParent();//删除节点
//            TreePath selectionPath = jTree.getSelectionPath();
//            jTree.startEditingAtPath(selectionPath);//开始编辑选择节点,不能updateUI
//            jTree.setSelectionPath(new TreePath(new Object[]{root,r1,o1}));//设置指定路径为选中
//            jTree.setSelectionRows(TreePath[] paths);//设置多个指定路径为选中jTree.updateUI();});jPanel.add(jButton);

30.  JToolTip - 组件提示

(1) 说明

        JToolTip是指当鼠标停留在一个控件上时显示的一个包含相关信息的方框,可通过重写组件createToolTip方法自定义提示框样式。

(2) 示例

        //自定义ToolTip,需要重写组件createToolTip方法JLabel jLabel=new JLabel("标签"){@Overridepublic JToolTip createToolTip() {JToolTip jToolTip = new JToolTip();jToolTip.setForeground(Color.BLACK);//前景色jToolTip.setBackground(Color.YELLOW);//后景色jToolTip.setFont(new Font("黑体",Font.ITALIC,50));//字体jToolTip.setBorder(BorderFactory.createLineBorder(Color.GREEN));//设置边框jToolTip.setOpaque(false);//设置是否不透明,设置为fasle后背景色设置失效jToolTip.setComponent(this);return jToolTip;}};jLabel.setToolTipText("提示");

31. JSlider - 滑杆

(1) 说明

       JSlider 滑块是一个允许用户在有限区间内通过移动滑块来选择值的组件。

(2) 示例

        //设置组件方向,最大最小值及初始值。JSlider slider = new JSlider(JSlider.HORIZONTAL,0,100,0);slider.setMajorTickSpacing(10);//主刻度slider.setMinorTickSpacing(2);//次刻度slider.setPaintLabels(true);//是否在滑块上绘制标签,默认falseslider.setPaintTicks(true);//是否在滑块上绘制刻度标记,默认falseslider.setPaintTrack(true);//是否在滑块上绘制滑道,默认trueslider.setInverted(false);//是否倒序,默认falseslider.addChangeListener(e -> {System.out.println(((JSlider)e.getSource()).getValue());});//加到指定容器中jFrame.add(slider);

32. JColorChooser - 颜色选择器

(1) 说明

        JColorChooser颜色选择器用于颜色的选择、编辑等操作。主要为showDialog()和createDialog()方法的使用,前者只能选择颜色,后者能通过事件监听器实现颜色选择之后的应用。

(2) 示例

Color backgroundColor = JColorChooser.showDialog(jFrame,"请选择颜色", Color.white);

33. JFileChooser - 文件选择器

(1) 说明

        JFileChooser是一个为用户提供选择文件的简单机制的组件。

(2) 示例

        JPanel jPanel = new JPanel();JButton jButton = new JButton("点击");jButton.addActionListener(e -> {//文件选择器JFileChooser jFileChooser = new JFileChooser();//设置文件的打开模式.FILES_ONLY(仅文件)、DIRECTORIES_ONLY(仅目录)、FILES_AND_DIRECTORIES(文件和目录)jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//打开文件选择器的当前显示目录jFileChooser.setCurrentDirectory(new File("D:\\zp\\"));//是否可以同时选取多个文件,默认值是false。jFileChooser.setMultiSelectionEnabled(false);//文件类型限制jFileChooser.setFileFilter(new FileFilter() {@Overridepublic boolean accept(File f) {if (f.isDirectory())return true;//返回true的文件或目录在文件选择器中显示return f.getName().endsWith(".zip");}@Overridepublic String getDescription() {//返回文件选择器 类型显示 字段return ".zip";}});//显示文件选择器弹框,返回0已选择文件,1为没选int returnValue = jFileChooser.showDialog(jFrame, "选择文件");System.out.println(returnValue);if (returnValue == JFileChooser.APPROVE_OPTION) {//选择的文件File file = jFileChooser.getSelectedFile();}});jPanel.add(jButton);

34. JOptionPane - 弹框

(1) 说明

        JOptionPane可以非常方便地创建一些简单的对话框,含有消息对话框、确认对话框、输入对话框、自定义选项对话框。

(2) 示例

//消息提示框。ERROR_MESSAGE(错误)、INFORMATION_MESSAGE(信息)、WARNING_MESSAGE(警告)、QUESTION_MESSAGE(问题)、PLAIN_MESSAGE(无图标)
JOptionPane.showMessageDialog(jPanel,"错误提示框","错误提示框",JOptionPane.ERROR_MESSAGE);
//确认框,返回结果 是-0 否-1  取消-2 右上角关闭- -1
int i = JOptionPane.showConfirmDialog(jFrame, "是否操作");
//输入框,返回输入值
String s = JOptionPane.showInputDialog("请输入。。。");
//自定义配置的弹框,可设置消息、标题、操作类型、消息类型,自定义按钮,自定义图标等
int i = JOptionPane.showOptionDialog(jFrame, "消息", "标题", JOptionPane.CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, new ImageIcon(), new Object[]{"是","否","不确定"}, "否");//在指定组件内部显示消息提示框。ERROR_MESSAGE(错误)、INFORMATION_MESSAGE(信息)、WARNING_MESSAGE(警告)、QUESTION_MESSAGE(问题)、PLAIN_MESSAGE(无图标)
JOptionPane.showInternalMessageDialog(jPanel,"错误提示框","错误提示框",JOptionPane.ERROR_MESSAGE);
//在指定组件内部显示确认框,返回结果 是-0 否-1  取消-2 右上角关闭- -1
int i = JOptionPane.showInternalConfirmDialog(jFrame, "是否操作");
//在指定组件内部显示输入框,返回输入值
String s = JOptionPane.showInternalInputDialog("请输入。。。");
//在指定组件内部显示配置弹框,可设置消息、标题、操作类型、消息类型,自定义按钮,自定义图标等
int i = JOptionPane.showInternalOptionDialog(jFrame, "消息", "标题", JOptionPane.CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, new ImageIcon(), new Object[]{"是","否","不确定"}, "否");

35. JSpinner  - 微调选择器

(1) 说明

         JSpinner允许用户从有序序列中选择数字或对象值。

(2) 示例

        //数值微调控制配置,指定初始值、最小值、最大值、进步值。SpinnerModel spinnerModel1 = new SpinnerNumberModel(1, 0, 100, 1);//微调控制,数字选择JSpinner spinner1 = new JSpinner(spinnerModel1);//监听器spinner1.addChangeListener(e -> {System.out.println(((JSpinner)e.getSource()).getValue());});//加到指定容器中jFrame.add(spinner1);//日期微调控制配置,可指定默认显示日期,开始、结束日期 及 显示类型。SpinnerDateModel spinnerModel2 = new SpinnerDateModel();spinnerModel2.setValue(new Date());//设置当前日期JSpinner spinner2 = new JSpinner(spinnerModel2);//配置日期格式JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner2, "yyyy-MM-dd HH:mm:sss");DateFormatter formatter = (DateFormatter)editor.getTextField().getFormatter();formatter.setAllowsInvalid(false);//是否允许正在编辑的值在一段时间内无效formatter.setOverwriteMode(false);//是否新字符将覆盖模型中的现有字符。spinner2.setEditor(editor);//加到指定容器中jFrame.add(spinner2);//数组或集合微调控制配置,指定集合或数组数据。String[] data={"A","B","C"};SpinnerListModel spinnerModel3 = new SpinnerListModel(data);//微调控制,数字选择JSpinner spinner3 = new JSpinner(spinnerModel3);//加到指定容器中jFrame.add(spinner3);

36. JScrollBar - 滚动条

(1) 说明

        JScrollbar用于添加水平和垂直滚动条。它是滚动条的实现。

(2) 示例

        JPanel jPanel = new JPanel();//数值选择滚动条,可设置方向、初始值、延伸区,最大最小值。最大值-最小值-延伸区=滚动条刻度(长度)JScrollBar jScrollBar = new JScrollBar(JScrollBar.HORIZONTAL,0,0,0,100);jScrollBar.setValue(0);// 设置默认滚动轴位置。jScrollBar.setPreferredSize(new Dimension(200,20));jScrollBar.setUnitIncrement(1);// 设置拖曳滚动轴时,滚动轴刻度一次的变化量。jScrollBar.setBlockIncrement(10);// 设置当鼠标在滚动轴列上按一下是,滚动轴一次所跳的区块大小jScrollBar.setMinimum (1);//最小值jScrollBar.setMaximum (100); //最大值//监听器jScrollBar.addAdjustmentListener(e->{System.out.println(jScrollBar.getValue());});//加到指定容器中jPanel.add(jScrollBar);

相关文章:

swing组件应用

1. 组件概述 &#xff08;1&#xff09; 说明 组件组成Java 的图形界面的各个元素&#xff0c;按照不同的功能&#xff0c;可分为 顶层容器、中间容器、基本组件。顶层容器为java.awt.Window的子类&#xff0c;有JFrame、JDialog等。中间容器和基础组件都为javax.swing.JCompo…...

Spring学习记录----十五、面向切面编程AOP+十六、Spring对事务的支持

十五、面向切面编程AOP IoC使软件组件松耦合。AOP让你能够捕捉系统中经常使用的功能&#xff0c;把它转化成组件。 AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff1a;面向切面编程&#xff0c;面向方面编程。&#xff08;AOP是一种编程技术&#xff09; …...

Color Correction (颜色校正)

介绍 在Unity中&#xff0c;Color Correction (颜色校正) 是一种用于调整场景或游戏画面颜色的技术。其中&#xff0c;Curves&#xff08;曲线&#xff09;和Saturation&#xff08;饱和度&#xff09;是常用的Color Correction工具。通过Curves&#xff0c;可以对RGB通道进行…...

Unity-缓存池

一、.基础缓存池实现 继承的Singleton脚本为 public class Singleton<T> where T : new() {private static T _instance;public static T GetIstance(){if (_instance null)_instance new T();return _instance;} } 1.PoolManager using System.Collections; using S…...

ubuntu samba 配置常见问题

samba配置&#xff1a; sudo vi /etc/samba/smb.conf [xxx 共享文件名] comment share folder browseable yes writable yes guest ok yes path /workdir/code/favarite create mask 0777 directory mask 0777 sudo /etc/init.d/smbd restart 重启smb服务 以上操作…...

vue3.3-TinyMCE:TinyMCE富文本编辑器基础使用

一、TinyMCE官网 GitHub - tinymce/tinymce TinyMCE中文文档中文手册 二、官网介绍 TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。同类程序有&#xff1a;UEditor、Kindeditor、Simditor、CKEditor、wangEditor、Suneditor、froala等等。 TinyMCE的优势&…...

基于以太坊+IPFS的去中心化数据交易方法及平台

自己的论文&#xff0c;哎费事 目录 基于以太坊IPFS的去中心化数据交易方法及平台 基于以太坊IPFS的去中心化数据交易方法及平台 摘要&#xff1a; 数据交易过程中存在数据权属不明和数据安全问题。本文开发了一种基于以太坊IPFS的去中心化数据交易方法及平台。方法包括&am…...

NestJS 的 拦截器 学习

拦截器会用到RxJs&#xff0c;所以在学习拦截器之前可以先了解一下它。 拦截器是使用Injectable()装饰器装饰的类并且实现了接口NestInterceptor。 拦截器受到 AOP(面向切面编程)技术的启发&#xff0c;具有如下的功能&#xff1a; 在方法执行之前/之后绑定额外的逻辑转换函…...

Spring AOP 中的代理对象是怎么创建出来的?

文章目录 1. AOP 用法2. 原理分析2.1 doCreateBean2.2 postProcessAfterInitialization2.3 getAdvicesAndAdvisorsForBean2.3.1 findCandidateAdvisors2.3.2 findAdvisorsThatCanApply2.3.3 extendAdvisors 2.4 createProxy 今天和小伙伴们聊一聊 Spring AOP 中的代理对象是怎么…...

解决@Scope(“prototype“)不生效的问题

目录 Scope(“prototype“)不生效Scope(“prototype“)正确用法——解决Bean多例问题 1.问题&#xff0c;Spring管理的某个Bean需要使用多例2.问题升级3. Spring给出的解决问题的办法&#xff08;解决Bean链中某个Bean需要多例的问题&#xff09; Scope(“prototype“)不生效 …...

Mybatis 知识点

Mybatis 知识点 1.1 Mybatis 简介 1.1.1 什么是 Mybatis Mybatis 是一款优秀的持久层框架支持定制化 SQL、存储过程及高级映射Mybatis 几乎避免了所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO…...

PHP中关于is,between,in等运算符的用法是什么?

我们学习了解了这么多关于PHP的知识&#xff0c;不知道你们对PHP中关于is&#xff0c;between&#xff0c;in等运算符的用法是什么&#xff1f;是否已经完全掌握了呢&#xff0c;如果没有&#xff0c;那就跟随本篇文章一起继续学习吧 相关推荐&#xff1a;关于PHP中的增删改如…...

2023-07-29:华清远见嵌入式2017年线下班:文件IO笔记

这里写目录标题 华清远见嵌入式2017年线下班&#xff1a;文件IO笔记文件权限文件IO文件创建和打开操作文件关闭操作出错处理创建设备文件 || create || 老师自己忘了文件读操作练习&#xff1a;计算文件的大小&#xff1f;文件写操作练习&#xff1a;打开file1和file2&#xff…...

2023年第四届“华数杯”数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&#xff0…...

Typescript第七章 处理错误(返回null,抛出异常,返回异常,Option类型)

第七章 处理错误 Typescript竭尽所能&#xff0c;把运行时异常转移到编译时。Typescript是功能丰富的系统&#xff0c;加上强大的静态和符号分析能力&#xff0c;包揽了大量辛苦的工作。 但是有些问题是无法避免的&#xff0c;比如网络和文件系统异常&#xff0c;解析用户输入…...

Qt库xcb问题

首先在~/.bashrc中加入 export QT_DEBUG_PLUGINS1然后看具体的报错 查看某个库链接的库&#xff1a; ldd libqxcb.so然后找到真正缺少的库&#xff0c;再在路径下搜索&#xff0c;然后建立软链接。 https://blog.csdn.net/LOVEmy134611/article/details/107212845 https://…...

C++ | 哈希表的实现与unordered_set/unordered_map的封装

目录 前言 一、哈希 1、哈希的概念 2、哈希函数 &#xff08;1&#xff09;直接定址法 &#xff08;2&#xff09;除留余数法 &#xff08;3&#xff09;平方取中法&#xff08;了解&#xff09; &#xff08;4&#xff09;随机数法&#xff08;了解&#xff09; 3、哈…...

【漏洞挖掘】Xray+rad自动化批量漏洞挖掘

文章目录 前言一、挖掘方法二、使用步骤工具安装使用方法开始挖掘 总结 前言 自动化漏洞挖掘是指利用计算机程序和工具来扫描、分析和检测应用程序、网络和系统中的安全漏洞的过程。这种方法可以帮助安全专家和研究人员更高效地发现和修复潜在的安全威胁&#xff0c;从而提高整…...

Swagger UI教程 API 文档和Node的使用

在团队开发中&#xff0c;一个好的 API 文档可以减少很多交流成本&#xff0c;也可以使一个新人快速上手业务。 前言 swagger ui是一个API在线文档生成和测试的利器&#xff0c;目前发现最好用的。为什么好用&#xff1f;Demo 传送门 支持API自动生成同步的在线文档 这些文档可…...

P5691 [NOI2001] 方程的解数

[NOI2001] 方程的解数 题目描述 已知一个 n n n 元高次方程&#xff1a; ∑ i 1 n k i x i p i 0 \sum\limits_{i1}^n k_ix_i^{p_i} 0 i1∑n​ki​xipi​​0 其中&#xff1a; x 1 , x 2 , … , x n x_1, x_2, \dots ,x_n x1​,x2​,…,xn​ 是未知数&#xff0c; k 1 ,…...

rust里用什么表示字节类型?

在Rust中&#xff0c;字节可以使用 u8 类型来表示。 u8 是一个无符号8位整数类型&#xff0c;可以表示0到255之间的值&#xff0c;对应于一个字节的范围。 以下是一个示例&#xff0c;演示了如何声明和使用字节&#xff1a; fn main() {let byte: u8 65; // 表示字母A的ASCI…...

CMake简介

文章目录 为什么需要头文件为什么 C 需要声明头文件 - 批量插入几行代码的硬核方式头文件进阶 - 递归地使用头文件 CMake什么是编译器多文件编译与链接CMake 的命令行调用为什么需要库&#xff08;library&#xff09;CMake 中的静态库与动态库CMake 中的子模块子模块的头文件如…...

[threejs]相机与坐标

搞清相机和坐标的关系在threejs初期很重要&#xff0c;否则有可能会出现写了代码&#xff0c;运行时一片漆黑的现象&#xff0c;这种情况就有可能是因为你相机没弄对。 先来看一下threejs中的坐标(世界坐标) 坐标轴好理解&#xff0c;大家只需要知道在three中不同颜色代表的轴…...

Qt信号与槽机制的基石-MOC详解

引入 上篇讲到了信号与槽就是实现的观察者模式&#xff0c;那具体如何生成映射表就是moc做的事情。 一、moc简介 1. moc的定义 moc 全称是 Meta-Object Compiler&#xff0c;也就是“元对象编译器”&#xff0c;它主要用于处理C源文件中的非标准C代码。Qt 程序在交由标准编…...

关于单体架构缓存刷新实现方案

背景 如果各位看官是分布式项目应该都采用分布式缓存了&#xff0c;例如redis等&#xff0c;分布式缓存不在本次讨论范围哈&#xff1b;我个人建议是&#xff0c;如果是用户量比较大&#xff0c;建议采用分布式缓存机制&#xff0c;后期可以很容易前后到分布式服务或微服务。 …...

洞悉安全现状,建设网络安全防护新体系

一、“网络攻防演练行动“介绍 国家在2016年发布《网络安全法》&#xff0c;出台网络安全攻防演练相关规定&#xff1a;关键信息基础设施的运营者应“制定网络安全事件应急预案&#xff0c;并定期进行演练”。同年“实战化网络攻防演练行动”成为惯例。由公安部牵头&#xff0…...

spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象

&#x1f600;前言 本章是spring基于XML 配置bean系类中第4篇讲解spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望…...

三元组表实现矩阵相加(数据结构)

代码&#xff1a; 含注释&#xff0c;供参考 #include <stdio.h> #include <stdlib.h>typedef struct {int row,col,value;//分别为行数&#xff0c;列数&#xff0c;数值 } Triple; typedef struct {int len;//非零数值的个数Triple data[200]; } TSMatrix;void…...

ChinaJoy 2023微星雷鸟17游戏本震撼发布:搭载AMD锐龙9 7945HX首发8499元

ChinaJoy 2023展会中微星笔记本再次给大家带来惊喜&#xff0c;发布了搭载AMD移动端16大核的旗舰游戏本&#xff1a;雷鸟17&#xff0c;更重要的这样一款旗舰性能的游戏本&#xff0c;首发价8499元堪称当今游戏本市场中的“性价比爆款”&#xff01; 本着和玩家一同制霸游戏战场…...

各种运算符

算术运算符 1.双目运算符 */%&#xff1a;从左到右优先级依次降低 一些注意事项&#xff1a; 1若a/b都为整型那么结果也为整型&#xff0c;如果ab其中有一个为实型&#xff0c;结果则为实型 求余运算符注意事项&#xff1a; 1运算对象必须为整数 2运算结果的整数跟左边数字的…...