<目录>

1 创建一个简单的窗体

如何进行事件监听

  (1) 按钮监听

  (2) 键盘监听

  (3) 鼠标监听

3 容器

  (1) 创建一个简单的对话框

  (2) 创建一个简单的模态对话框

  (3) 使窗体大小不可变化

4 布局器

  (1) 绝对定位

  (2) FlowLayout(顺序布局器:容器上的组件水平摆放)

  (3) BorderLayout(边框布局器:容器上的组件按上北、下南、左西、右东、中的顺序摆放)

  (4) GridLayout(网格布局器:容器上的组件按网格区域摆放)

  (5) setPreferredSize(使用布局器的时候,改变组件显示大小,仅部分有效)

  (6) CardLayout

5 组件

  (1) 标签

  (2) 使用JLabel显示图片

  (3) 按钮

  (4) 复选框

  (5) 单选框

  (6) 按钮组

  (7) 下拉框

  (8) 对话框

  (9) 文本框

  (10) 密码框

  (11) 文本域

  (12) 进度条

  (13) 文件选择器

6 面板

  (1) 基本面板

  (2) ContentPane

  (3) SplitPanel

  (4) JScrollPanel

  (5) TabbedPanel

  (6) CardLayerout

7 菜单

  (1) 菜单栏和菜单

  (2) 菜单项

8 工具栏

  (1) 工具栏

  (2) 给按钮设置提示信息

  (3) 禁止工具栏拖动

9 表格

  (1) 基本表格

  (2) JScrollPane

  (3) 列宽

  (4) TableModel

  (5) 进一步理解TableModel

  (6) TableModel与DAO结合

  (7) TableSelectionModel

  (8) 更新Table

  (9) 输入项验证

  (10) 选中指定行

10 日期控件

  (1) DatePicker

  (2) JXDatePicker

11 Swing中的线程

  (1) 三种线程

  (2) 事件调度线程是单线程的

  (3) 初始化线程

  (4) 事件调度线程

  (5) 长耗时任务线程

12 皮肤


<正文内容>

<创建一个简单的窗体>

package practice;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
    public static void main(String[] args) {
        JFrame f=new JFrame("Kannyi的窗体");  //主窗体,括号里面是标题
        f.setSize(400,300);                  //主窗体设置大小,宽400高300
        f.setLocation(200, 200);             //主窗体设置位置,距离(屏幕左侧200,屏幕上方200)
        f.setLayout(null);                   //主窗体中的组件设置为绝对定位

        JButton b=new JButton("Kannyi的按钮");//按钮组件,还没设置功能
        b.setBounds(50,50,280,30);           //同时设置组件的位置和大小
        f.add(b);                            //把按钮加入到主窗体中

        //关闭窗体时,退出程序,不关会越来越卡
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //让窗体可见
        f.setVisible(true);
    }
}

界面如下:

<如何进行事件监听>

(1)按钮监听

package practice;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {
    public static void main(String[] args) {
        JFrame f=new JFrame("Kannyi的窗体"); //主窗体,括号里面是标题
        f.setSize(400,300);                 //主窗体设置大小,宽400高300
        f.setLocation(580,200);             //主窗体设置位置,距离(屏幕左侧200,屏幕上方200)
        f.setLayout(null);                  //主窗体中的组件设置为绝对定位

        //标签,用于显示信息,比如文本或图像
        JLabel l1=new JLabel();
        //获取图像
        ImageIcon i=new ImageIcon("C:/Users/ASUS/Pictures/其他/img.png");
        //设置指定的图像到标签中
        l1.setIcon(i);
        //设置标签的位置和大小
        l1.setBounds(50,50,i.getIconWidth(),i.getIconHeight());

        JLabel l2=new JLabel();
        l2.setText("Kannyi的文本");          //设置指定的文本到标签中
        l2.setBounds(30, 30, 80, 12);       //设置标签的位置和大小,高度太高排版会出问题,12正好

        JButton b=new JButton("隐藏图片");    //按钮组件
        b.setBounds(250,200,100,30);

        //给按钮增加监听
        //写法1
        /*----------------------------------------------
        b.addActionListener(new ActionListener(){
            //当按钮被点击时,actionPerformed方法就会被执行
            //就会触发ActionEvent事件
            public void actionPerformed(ActionEvent e) {
                l.setVisible(false);
            }
        });
        -----------------------------------------------*/
        //写法2
        b.addActionListener(e->l1.setVisible(false));

        f.add(b);
        f.add(l1);
        f.add(l2);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下:

(2)键盘监听

package practice;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {
    public static void main(String[] args) {

        JFrame f = new JFrame("Kannyi的窗体");
        f.setSize(400, 300);
        f.setLocation(580, 200);
        f.setLayout(null);

        JLabel l = new JLabel();
        ImageIcon i = new ImageIcon("C:/Users/ASUS/Pictures/其他/img.png");
        l.setIcon(i);
        l.setBounds(50, 50, i.getIconWidth(), i.getIconHeight());

        //增加键盘监听
        f.addKeyListener(new KeyListener() {
            //键被弹起
            public void keyReleased(KeyEvent e) {
                //左键37 上键38 右键39 下键40
                /*
                可用下面这个函数知道键位的Code
                System.out.println(e.getKeyCode());
                */

                if (e.getKeyCode() == 37) {
                    //图片向左移动 (x坐标减少,y坐标不变)
                    l.setLocation(l.getX() -10, l.getY());
                }
                if (e.getKeyCode() == 38) {
                    //图片向上移动 (x坐标不变,y坐标减少)
                    l.setLocation(l.getX(), l.getY() - 10);
                }
                if (e.getKeyCode() == 39) {
                    //图片向右移动 (x坐标增加,y坐标不变)
                    l.setLocation(l.getX() + 10, l.getY());
                }
                if (e.getKeyCode() == 40) {
                    //图片向下移动 (x坐标不变,y坐标增加)
                    l.setLocation(l.getX(), l.getY() + 10);
                }
            }

            //键被按下,可以实现连续运动
            //之前被定义过的键位就不能用了
            public void keyPressed(KeyEvent e) {

            }

            // 一个按下弹起的组合动作
            //不会用!!!
            public void keyTyped(KeyEvent e) {

            }
        });

        f.add(l);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下(看不出什么特别,因为要用键盘实现上下左右操作):

(3)鼠标监听

package practice;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {
    public static void main(String[] args) {

        JFrame f = new JFrame("Kannyi的窗体");
        f.setLayout(null);
        f.setSize(500, 400);
        f.setLocationRelativeTo(null);               //设置窗体在屏幕正中央

        JLabel l = new JLabel();
        ImageIcon i = new ImageIcon("C:/Users/ASUS/Pictures/其他/img.png");
        l.setIcon(i);
        l.setBounds(150, 100, i.getIconWidth(), i.getIconHeight());

        /*
        //鼠标监听-方法1
        //这种方法的缺点在于每个方法都要写出来,很麻烦
        l.addMouseListener(new MouseListener() {
            //释放鼠标
            public void mouseReleased(MouseEvent e) {

            }

            //按下鼠标
            public void mousePressed(MouseEvent e) {

            }

            //鼠标退出
            public void mouseExited(MouseEvent e) {

            }

            //鼠标进入
            public void mouseEntered(MouseEvent e) {
                //Random r.nextInt(int n)可以随机生成一个[0,n)的区间
                Random r = new Random();
                //下面的相减操作是防止图片随机到窗体外
                int x = r.nextInt(f.getWidth() - l.getWidth());
                int y = r.nextInt(f.getHeight() - l.getHeight());
                l.setLocation(x, y);
            }

            //按下释放组合动作为点击鼠标
            public void mouseClicked(MouseEvent e) {

            }
        });
         */

        //鼠标监听-方法2
        //用适配器,只需要重写用到的方法即可,较为方便
        l.addMouseListener(new MouseAdapter() {
            //只有mouseEnter用到了
            public void mouseEntered(MouseEvent e) {
                Random r=new Random();
                int x=r.nextInt(f.getWidth()-l.getWidth());
                int y=r.nextInt(f.getHeight()-l.getHeight());
                l.setLocation(x, y);
            }
        });

        f.add(l);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下(看不出什么特别,因为要用鼠标实现操作):

<容器>

(1)创建一个简单的对话框

package practice;

import javax.swing.JButton;
import javax.swing.JDialog;

public class Test {
    public static void main(String[] args) {
        JDialog d=new JDialog();             //对话框
        d.setTitle("Kannyi的对话框");         //设置对话框的标题
        d.setSize(400,300);
        d.setLocation(200,200);
        d.setLayout(null);

        JButton b=new JButton("kannyi的按钮");
        b.setBounds(50,50,280,30);

        d.add(b);

        d.setVisible(true);
    }
}

界面如下:

(2)创建一个简单的模态对话框(父窗体不能被激活,除非对话框关闭)

package practice;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;

public class Test {
    public static void main(String[] args) {
        JFrame f=new JFrame("Kannyi的外部窗体");
        f.setSize(600, 500);
        f.setLocation(100, 100);

        JDialog d=new JDialog(f);   //根据外部窗体实例化JDialog
        d.setModal(true);           //设置为模态,其后的父窗体不能被激活,除非对话框关闭

        d.setTitle("Kannyi的模态对话框");
        d.setSize(400,300);
        d.setLocation(200,200);
        d.setLayout(null);

        JButton b=new JButton("Kannyi的按钮");
        b.setBounds(50,50,280,30);

        d.add(b);

        f.setVisible(true);
        d.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

界面如下:

(3)使窗体大小不可变化

package practice;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {
    public static void main(String[] args) {
        JFrame f=new JFrame("Kannyi的窗口");
        f.setSize(400,300);
        f.setLocation(200, 200);
        f.setLayout(null);

        JButton b=new JButton("Kannyi的按钮");
        b.setBounds(50, 50, 280, 30);

        f.add(b);
        //窗体大小不可变化
        f.setResizable(false);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        f.setVisible(true);
    }
}

界面如下:

<布局器>

(1)绝对定位

package practice;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {

    public static void main(String[] args) {
        JFrame f=new JFrame("Kannyi的窗体");
        f.setSize(400,300);
        f.setLocation(200,200);
        //绝对定位:设置布局器为null,容器上的组件都需要指定位置和大小
        f.setLayout(null);

        JButton b1=new JButton("按钮1");
        b1.setBounds(50,50,70,30);
        JButton b2=new JButton("按钮2");
        b2.setBounds(150,50,80,30);
        //没有指定位置和大小,不会出现在容器上
        JButton b3=new JButton("按钮3");

        f.add(b1);
        f.add(b2);
        f.add(b3);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        f.setVisible(true);
    }
}

界面如下:

(2)FlowLayout

package practice;

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {

    public static void main(String[] args) {
        JFrame f=new JFrame("Kannyi的窗体");
        f.setSize(400,300);
        f.setLocation(200, 200);
        //设置布局器为FlowLayrout
        //容器上的组件水平摆放
        f.setLayout(new FlowLayout());

        JButton b1=new JButton("按钮1");
        JButton b2=new JButton("按钮2");
        JButton b3=new JButton("按钮3");

        //加入到容器,无需单独指定大小和位置
        f.add(b1);
        f.add(b2);
        f.add(b3);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下:

(3)BorderLayout

package practice;

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {

    public static void main(String[] args) {
        JFrame f=new JFrame("Kannyi的窗体");
        f.setSize(400,300);
        f.setLocation(200,200);
        //设置布局为BorderLayout
        //容器上的组件按照 上北 下南 左西 右东 的顺序摆放(可以自己设置)
        f.setLayout(new BorderLayout());

        JButton b1 = new JButton("按钮1");
        JButton b2 = new JButton("按钮2");
        JButton b3 = new JButton("按钮3");
        JButton b4 = new JButton("按钮4");
        JButton b5 = new JButton("按钮5");

        //加入到容器的时候,需要指定位置
        f.add(b1, BorderLayout.NORTH);
        f.add(b2, BorderLayout.SOUTH);
        f.add(b3, BorderLayout.WEST);
        f.add(b4, BorderLayout.EAST);
        f.add(b5, BorderLayout.CENTER);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下:

(4)GridLayout

import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {
    public static void main(String[] args) {

        JFrame f = new JFrame("Kannyi的窗体");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        // 设置布局器为GridLayerout,即网格布局器
        // 该GridLayerout的构造方法表示该网格是2行3列
        f.setLayout(new GridLayout(2, 3));

        JButton b1 = new JButton("甲");
        JButton b2 = new JButton("乙");
        JButton b3 = new JButton("丙");
        JButton b4 = new JButton("丁");
        JButton b5 = new JButton("戊");

        f.add(b1);
        f.add(b2);
        f.add(b3);
        f.add(b4);
        f.add(b5);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下:

(5)setPreferredSize

import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {
    public static void main(String[] args) {

        JFrame f = new JFrame("Kannyi的窗体");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        f.setLayout(new FlowLayout());

        JButton b1 = new JButton("甲");
        JButton b2 = new JButton("乙");
        JButton b3 = new JButton("丙");

        // 即便使用布局器,也可以通过setPreferredSize,向布局器建议该组件显示的大小
        b3.setPreferredSize(new Dimension(180, 40));

        f.add(b1);
        f.add(b2);
        f.add(b3);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下:

(6)CardLayout

界面如下:

<组件>

(1)标签

界面如下:

(2)使用JLabel显示图片

界面如下:

(3)按钮

界面如下:

(4)复选框

界面如下:

(5)单选框

界面如下:

(6)按钮组

界面如下:

(7)下拉框

界面如下:

(8)对话框

界面如下:

(9)文本框

界面如下:

(10)密码框

界面如下:

(11)文本域

界面如下:

(12)进度条

界面如下:

(13)文件选择器

界面如下:

<面板>

(1)基本面板

界面如下:

(2)ContentPane

界面如下:

(3)SplitPanel

界面如下:

(4)JScrollPanel

界面如下:

(5)TabbedPanel

界面如下:

(6)CardLayerout

界面如下:

<菜单>

(1)菜单栏和菜单

package practice;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;

public class Test33 {

    public static void main(String[] args) {
        JFrame f = new JFrame("Kannyi");
        f.setSize(400, 300);
        f.setLocation(200, 200);

        //菜单栏
        JMenuBar mb = new JMenuBar();

        //菜单
        JMenu mHero = new JMenu("英雄");
        JMenu mItem = new JMenu("道具");
        JMenu mWord = new JMenu("符文");
        JMenu mSummon = new JMenu("召唤师");
        JMenu mTalent = new JMenu("天赋树");

        //把菜单加入到菜单栏
        mb.add(mHero);
        mb.add(mItem);
        mb.add(mWord);
        mb.add(mSummon);
        mb.add(mTalent);

        //把菜单栏加入到frame,这里用的是set而非add
        f.setJMenuBar(mb);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下:

(2)菜单项

package practice;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Test34 {

    public static void main(String[] args) {
        JFrame f = new JFrame("Kannyi的窗体");
        f.setSize(500, 400);
        f.setLocation(200, 200);

        JMenuBar mb = new JMenuBar();

        JMenu mHero = new JMenu("英雄");
        JMenu mItem = new JMenu("道具");
        JMenu mWord = new JMenu("符文");
        JMenu mSummon = new JMenu("召唤师");
        JMenu mTalent = new JMenu("天赋树");

        //菜单项
        mHero.add(new JMenuItem("近战"));
        mHero.add(new JMenuItem("远程"));
        mHero.add(new JMenuItem("物理"));
        mHero.add(new JMenuItem("坦克"));
        mHero.add(new JMenuItem("法系"));
        mHero.add(new JMenuItem("辅助"));
        mHero.add(new JMenuItem("打野"));
        mHero.add(new JMenuItem("突进"));
        mHero.add(new JMenuItem("男性"));
        mHero.add(new JMenuItem("女性"));
        //分隔符
        mHero.addSeparator();
        mHero.add(new JMenuItem("所有"));

        mb.add(mHero);
        mb.add(mItem);
        mb.add(mWord);
        mb.add(mSummon);
        mb.add(mTalent);

        f.setJMenuBar(mb);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}

界面如下:

<工具栏>

(1)工具栏

界面如下:

(2)给按钮设置提示信息

界面如下:

(3)禁止工具栏拖动

界面如下:

<表格>

(1)基本表格

界面如下:

(2)JScrollPane

界面如下:

(3)列宽

界面如下:

(4)TableModel

界面如下:

(5)进一步理解TableModel

界面如下:

(6)TableModel与DAO结合

界面如下:

(7)TableSelectionModel

界面如下:

(8)更新Table

界面如下:

(9)输入项验证

界面如下:

(10)选中指定行

界面如下:

<日期控件>

(1)DatePicker

界面如下:

(2)JXDatePicker

界面如下:

<Swing中的线程>

(1)三种线程

界面如下:

(2)事件调度线程是单线程的

界面如下:

(3)初始化线程

界面如下:

(4)事件调度线程

界面如下:

(5)长耗时任务线程

界面如下:

<皮肤>

界面如下:

【Java项目】GUI图形用户界面(不断更新中!)的更多相关文章

  1. java第八节 GUI/图形用户界面

    /* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...

  2. AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API

    抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包. AWT是Java基础类 (JFC)的一部分,为Java程 ...

  3. 黑马程序员_<<GUI(图形用户界面)--------1>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1.  GUI图形用户界面 1.简述 Gra ...

  4. JAVA记事本的图形用户界面应用程序含过滤

    JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...

  5. JAVA记事本的图形用户界面应用程序含加密

    JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...

  6. JAVA记事本的图形用户界面应用程序

    JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...

  7. java GUI(图形用户界面)

    GUI Graphical User Interface(图形用户接口). 用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI Command line User Interface ( ...

  8. linux系统中firewalld防火墙管理工具firewall-config(GUI图形用户界面)

    firewall-config是firewalld防火墙管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作. firewall-config的界面如下图(在终端直接运行fire ...

  9. 十一:Java之GUI图形Awt和Swing

    一. AWT和 Swing AWT 和 Swing 是 Java 设计 GUI用户界面的基础.与 AWT 的重量级组件不同,Swing 中大部分是轻量级组件.正是这个原因,Swing 差点儿无所不能, ...

  10. GUI(图形用户界面)

    一.GUI(图形用户界面) GUI Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样更方便更直观 CLI Command line User ...

随机推荐

  1. 本地调试 谷歌浏览器报错:跨域问题处理 Access-Control-Allow-Origin

    前端在本地,调试,就经常的就是会遇到 调用接口,提示跨域了. 如你要访问 http://****/api/user chrome 浏览器 报错: XMLHttpRequest cannot load ...

  2. Mybatis学习第四天——Mybatis与Spring整合

    主要介绍mapper配置与mapper的扫描配置,使用dao层的配置这里不多说. 1.导包 1.1 Mybatis的jar包 1.2 Spring的jar包 1.3 Spring与Mybatis整合包 ...

  3. IEC62304开发过程框架

    软件开发计划的任务 制定整体软件开发计划 制定设计和开发计划 规划软件开发的工具.标准和方法(Class C) 制定软件集成和集成计划 制定软件验证计划 制定软件风险管理计划 制定配置管理计划 软件需 ...

  4. 《IT老外在中国》第11期:首次访华的编程巨匠、C#之父Anders

    见到Anders的时候,他正专注的倾听国内开发者的提问,一副远视眼镜斜歪着架在头顶,宽松的深蓝色休闲毛衫随意套在白色圆领T恤外. 如果不是他那专注的神情,以及现场见证开发者对他的狂热崇拜,很难想象这位 ...

  5. iOS设计模式 - 外观

    iOS设计模式 - 外观 原理图 说明 1. 当客服端需要使用一个复杂的子系统(子系统之间关系错综复杂),但又不想和他们扯上关系时,我们需要单独的写出一个类来与子系统交互,隔离客户端与子系统之间的联系 ...

  6. Linux下调节CPU使用的几种方法

    一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上 #taskset-p,    设定一个已存在的pid,而不是重新开启一个新任务-c,    指定一个处理,可以指定多个,以 ...

  7. 进制转换excel版

  8. MapReduce Design Patterns(chapter 2 (part 2))(三)

    Median and standard deviation 中值和标准差的计算比前面的例子复杂一点.因为这种运算是非关联的,它们不是那么容易的能从combiner中获益.中值是将数据集一分为两等份的数 ...

  9. kafka部分重要参数配置-broker端参数

    broker端参数主要在config/server.properties目录下设置: 启动命令:nohup ./kafka-server-start.sh -daemon ../config/serv ...

  10. Python正则表达式(总)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6445044.html 本文出自:[Edwin博客园] Python正则表达式(总) search(patte ...