Java 图形化界面编程(Swing)入门实例_javaswing界面设计-程序员宅基地

技术标签: Java  java  Swing  图形化界面  入门实例  

本文目录

入门实例

  • 先整一个图形化界面出来
package swing;

import javax.swing.*;

public class Demo {
    

    public static void main(String[] args) {
    

        // 2. 创建中间容器(面板容器)
        JPanel panel = new JPanel();                // 创建面板容器,使用默认的布局管理器

        // 3. 创建一个基本组件(按钮),并添加到 面板容器 中
        JButton btn = new JButton("测试按钮");
        panel.add(btn);

        // 5. 显示窗口,前面创建的信息都在内存中,通过 jf.setVisible(true) 把内存中的窗口显示在屏幕上。
        // 1. 创建一个顶层容器(窗口)
        JFrame jf = new JFrame("测试窗口");          // 创建窗口

        jf.setContentPane(panel);// 4. 把 面板容器 作为窗口的内容面板 设置到 窗口
        jf.setSize(250, 250);                       // 设置窗口大小
        jf.setLocationRelativeTo(null);             // 把窗口位置设置到屏幕中心
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 当点击窗口的关闭按钮时退出程序(没有这一句,程序不会退出)
        jf.setVisible(true);
    }

}

常用布局

流式布局
package swing;

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

public class Main {
    

    public static void main(String[] args) {
    


        // 创建内容面板,指定使用 流式布局
        JPanel panel = new JPanel(new FlowLayout());

        JButton btn01 = new JButton("按钮01");
        JButton btn02 = new JButton("按钮02");
        JButton btn03 = new JButton("按钮03");
        JButton btn04 = new JButton("按钮04");
        JButton btn05 = new JButton("按钮05");

        panel.add(btn01);
        panel.add(btn02);
        panel.add(btn03);
        panel.add(btn04);
        panel.add(btn05);

        JFrame jf = new JFrame("测试窗口");
        jf.setContentPane(panel);
        jf.setSize(200, 250);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);        // PS: 最后再设置为可显示(绘制), 所有添加的组件才会显示
    }
}
网格布局
package swing;

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

public class Main {
    

    public static void main(String[] args) {
    


        // 创建 3 行 3 列 的网格布局
        GridLayout layout = new GridLayout(3, 3);

        // 设置 水平 和 竖直 间隙
        // layout.setHgap(10);
        // layout.setVgap(10);

        JPanel panel = new JPanel(layout);

        JButton btn01 = new JButton("按钮01");
        JButton btn02 = new JButton("按钮02");
        JButton btn03 = new JButton("按钮03");
        JButton btn04 = new JButton("按钮04");
        JButton btn05 = new JButton("按钮05");
        JButton btn06 = new JButton("按钮06");
        JButton btn07 = new JButton("按钮07");
        JButton btn08 = new JButton("按钮08");

        panel.add(btn01);
        panel.add(btn02);
        panel.add(btn03);
        panel.add(btn04);
        panel.add(btn05);
        panel.add(btn06);
        panel.add(btn07);
        panel.add(btn08);

        JFrame jf = new JFrame("测试窗口");

        jf.setContentPane(panel);
        jf.setSize(200, 250);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
    }
}
边界布局
package swing;

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

public class Main {
    

    public static void main(String[] args) {
    


        // 创建内容面包容器,指定使用 边界布局
        JPanel panel = new JPanel(new BorderLayout());

        // 创建 5 个按钮
        JButton btnN = new JButton("Button_North");
        JButton btnS = new JButton("Button_South");
        JButton btnW = new JButton("Button_West");
        JButton btnE = new JButton("Button_East");
        JButton btnC = new JButton("Button_Center");

        // 把 5 个按钮添加到容器中的 5 个方位
        panel.add(btnN, BorderLayout.NORTH);
        panel.add(btnS, BorderLayout.SOUTH);
        panel.add(btnW, BorderLayout.WEST);
        panel.add(btnE, BorderLayout.EAST);
        panel.add(btnC, BorderLayout.CENTER);

        JFrame jf = new JFrame("测试窗口");
        jf.setSize(350, 250);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setContentPane(panel);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
    }
}

实例1:

  • 编写拥有垂直Box (boxl)和水平Box (box2) 两类Box的BoxLayout.
    在这里插入图片描述
  • 具体代码实现
package layoutDemo;

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

public class BoxLayoutDemo {
    

    public static void main(String[] args) {
    

        JButton btn01 = new JButton("Button01");
        JButton btn02 = new JButton("Button02");
        JButton btn03 = new JButton("Button03");
        JButton btn04 = new JButton("Button04");
        JButton btn05 = new JButton("Button05");

        // 创建一个垂直箱容器,放置上面两个水平箱(Box组合嵌套)
        Box vBox = Box.createVerticalBox();
        vBox.add(Box.createRigidArea(new Dimension(300,0)));//Dimension类只是用来封装单个对象中组件的宽度和高度,此处表示jb1上方的距离
        vBox.add(btn04);
        vBox.add(Box.createVerticalStrut(20));//添加高度为20的垂直支架,也就是jb1和jb2之间的距离
        vBox.add(btn05);

        // 创建第一个水平箱容器
        Box hBox = Box.createHorizontalBox();
        hBox.add(btn01);
        hBox.add(Box.createHorizontalStrut(20));
        hBox.add(btn02);

        hBox.add(Box.createHorizontalGlue()); // 添加一个水平方向胶状的不可见组件,撑满剩余水平空间
        hBox.add(Box.createHorizontalStrut(20));

        hBox.add(btn03);

        vBox.add(Box.createVerticalStrut(100));
        vBox.add(hBox);

        JFrame jf = new JFrame("测试窗口");
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setContentPane(vBox);
        jf.setSize(400, 300);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
    }

}

实例2:

  • 编写拥有顶层容器Container和中间容器Jpane的CardLayout.要求给jbn按钮注册监听器,点击jbn按钮时可切换容器中的下一张卡片(共设置六张卡片)。
    在这里插入图片描述
  • 具体代码实现
package layoutDemo;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;


public class CardLayoutDemo extends JFrame {
    
    private JPanel cardPanel = null; // 主要的JPanel,该JPanel的布局管理将被设置成CardLayout
    private JPanel controlPanel = null; // 放按钮的JPanel
    private CardLayout card = null; // CardLayout布局管理器
    private JButton btnNext = null; // 下一步
    private JPanel p_1 = null, p_2 = null, p_3 = null,p_4 = null, p_5 = null, p_6 = null; // 要切换的三个JPanel

    public CardLayoutDemo() {
    
        super("CardLayoutDemo 窗口");
        try {
    
            // 将LookAndFeel设置成Windows样式
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (Exception ex) {
    
            ex.printStackTrace();
        }
        /**创建一个具有指定的水平和垂直间隙的新卡片布局*/
        card = new CardLayout(5, 5);
        cardPanel = new JPanel(card); // JPanel的布局管理将被设置成CardLayout
        controlPanel = new JPanel(); // 构造放按钮的JPanel
        btnNext = new JButton("下一张 >");
        controlPanel.add(btnNext);
        p_1 = new JPanel();
        p_2 = new JPanel();
        p_3 = new JPanel();
        p_4 = new JPanel();
        p_5 = new JPanel();
        p_6 = new JPanel();

        p_1.setBackground(Color.GREEN);
        p_2.setBackground(Color.MAGENTA);
        p_3.setBackground(Color.WHITE);
        p_4.setBackground(Color.PINK);
        p_5.setBackground(Color.CYAN);
        p_6.setBackground(Color.ORANGE);

        p_1.add(new JLabel("第一页"));
        p_2.add(new JLabel("第二页"));
        p_3.add(new JLabel("第三页"));
        p_4.add(new JLabel("第四页"));
        p_5.add(new JLabel("第五页"));
        p_6.add(new JLabel("第六页"));
        cardPanel.add(p_1, "p1");
        cardPanel.add(p_2, "p2");
        cardPanel.add(p_3, "p3");
        cardPanel.add(p_4, "p1");
        cardPanel.add(p_5, "p2");
        cardPanel.add(p_6, "p3");
        /**下面是翻转到卡片布局的某个组件,可参考API中的文档*/
        btnNext.addActionListener(new ActionListener(){
     // 下一步的按钮动作
            public void actionPerformed(ActionEvent e) {
    
                card.next(cardPanel);
            }
        });

        this.getContentPane().add(cardPanel);
        this.getContentPane().add(controlPanel, BorderLayout.SOUTH);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(300, 200);
        this.setVisible(true);
    }

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

}

实例3:

  • 编写2行,4列,行间距为40,列间距为40的GridLayout。要求初始化七个Button。
  • 设置窗体出现在屏幕中央
    在这里插入图片描述
  • 具体代码实现
package layoutDemo;

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

public class GridLayoutDemo {
    

    public static void main(String[] args) {
    


        // 创建 3 行 3 列 的网格布局
        GridLayout layout = new GridLayout(2, 4);

        // 设置 水平 和 竖直 间隙
         layout.setHgap(40);
         layout.setVgap(40);

        JPanel panel = new JPanel(layout);

        JButton btn01 = new JButton("按钮01");
        JButton btn02 = new JButton("按钮02");
        JButton btn03 = new JButton("按钮03");
        JButton btn04 = new JButton("按钮04");
        JButton btn05 = new JButton("按钮05");
        JButton btn06 = new JButton("按钮06");
        JButton btn07 = new JButton("按钮07");
//        JButton btn08 = new JButton("按钮08");

        panel.add(btn01);
        panel.add(btn02);
        panel.add(btn03);
        panel.add(btn04);
        panel.add(btn05);
        panel.add(btn06);
        panel.add(btn07);
//        panel.add(btn08);

        JFrame jf = new JFrame("GridLayoutDemo窗口");

        jf.setContentPane(panel);
        jf.setSize(600, 500);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
    }
}

实例4:

要求:
  • 字符串大小写转换:创建一个Jframe,里面包含1个TextField, 1个TextArea, 1个Button。
  • 给Button添加ActionListener监听器,实现按钮点击。
  • 在TextField中输入英文字符串,点击button后,将字符串中的大小写字符互换,显示在TextArea中。
    在这里插入图片描述
具体代码实现
package cust.aowei;

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class SwingLinsterDemo {
    

	public static void main(String[] args) {
    
		// TODO Auto-generated method stub
		SwingLinster swingLinster = new SwingLinster();
	}

}
class SwingLinster {
    

	public SwingLinster(){
    
	
        JPanel panel = new JPanel();                // 创建面板容器,使用默认的布局管理器
        final JTextField textField = new JTextField(8);
        final JTextField result = new JTextField(8);
        result.setFont(new Font(null, Font.PLAIN, 20));
        textField.setFont(new Font(null, Font.PLAIN, 20));
        panel.add(textField);
        panel.add(result);
        
        // 创建一个按钮,点击后获取文本框中的文本
        JButton btn = new JButton("提交");
        btn.setFont(new Font(null, Font.PLAIN, 20));
        panel.add(btn);
        
        // 5. 显示窗口,前面创建的信息都在内存中,通过 jf.setVisible(true) 把内存中的窗口显示在屏幕上。
        // 1. 创建一个顶层容器(窗口)
        JFrame jf = new JFrame("测试窗口");          // 创建窗口
        jf.setContentPane(panel);// 4. 把 面板容器 作为窗口的内容面板 设置到 窗口
        jf.setSize(400, 250);                       // 设置窗口大小
        jf.setLocationRelativeTo(null);             // 把窗口位置设置到屏幕中心
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 当点击窗口的关闭按钮时退出程序(没有这一句,程序不会退出)
        jf.setVisible(true);
        
        //监听按钮
        btn.addActionListener(new ActionListener() {
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
                System.out.println("提交: " + textField.getText());
                result.setText(Transformation(textField.getText()));
            }
        });
        
	}
	public String Transformation(String a){
    
		System.out.println("Transformation");
		char []tmp = a.toCharArray();
		for(int i = 0; i<a.length();i++){
    
			char t = tmp[i];
			System.out.println("for");
			
			if(t<= 90 && t>= 65){
    
				tmp[i]= Character.toLowerCase(t);
				System.out.println("转换为小写"+t);
			}else if(t<= 122 && t>= 97){
    
				tmp[i]= Character.toUpperCase(t);
				System.out.println("转换为大写"+t);
			}
		}
		System.out.print("转换后:"+String.valueOf(tmp));
		return String.valueOf(tmp);
	}
}

单词计数

要求:
  • 在textField(上)中填入输入文件路径(文件自己创建)点击button (上)后(判断是否存在),
  • 如果存在该路径,读取该文件内容,统计单词数量,以(单词,数量)的形式展示在textArea中。
  • 在textField(下)中填入输出文件路径,点击button(下)
  • 如果存在textField(下)中的文件则删除后创建,将textArea中的内容存入该文件
实现效果
  • 在项目根目录下新建aaa.txt
  • 添加内容
    在这里插入图片描述
  • 在对应文本框中输入文件名,点击读取
  • 读取的内容将按照特定格式显示在文本域中
    在这里插入图片描述
  • 在对应文本框中输入文件名,点击写入
  • 文本域中内容将被写入文件中
    在这里插入图片描述
具体代码实现
package cust.aowei.swingFile;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;


public class SwingFileDemo {
    
	public static void main(String[] args){
    
		SwingFile swingfile = new SwingFile();
	}

}


class SwingFile {
    
	private String fileContent;
	private JTextArea textArea;
	public SwingFile(){
    
	
        JPanel panel = new JPanel();                // 创建面板容器,使用默认的布局管理器
        final JTextField textFieldTop = new JTextField(8);
        final JTextField textFieldLow = new JTextField(8);
        textFieldTop.setFont(new Font(null, Font.PLAIN, 20));
        textFieldLow.setFont(new Font(null, Font.PLAIN, 20));
        panel.add(textFieldTop);
        
        // 创建一个按钮,点击后获取文本框中的文本
        JButton btnTop = new JButton("读取");
        btnTop.setFont(new Font(null, Font.PLAIN, 20));
        panel.add(btnTop);
        
        panel.add(textFieldLow);
        JButton btnLow = new JButton("写入");
        btnLow.setFont(new Font(null, Font.PLAIN, 20));
        panel.add(btnLow);
        
        textArea = new JTextArea(50,20);
        panel.add(textArea);
        
        // 5. 显示窗口,前面创建的信息都在内存中,通过 jf.setVisible(true) 把内存中的窗口显示在屏幕上。
        // 1. 创建一个顶层容器(窗口)
        JFrame jf = new JFrame("测试窗口");          // 创建窗口
        jf.setContentPane(panel);// 4. 把 面板容器 作为窗口的内容面板 设置到 窗口
        jf.setSize(300, 500);                       // 设置窗口大小
        jf.setLocationRelativeTo(null);             // 把窗口位置设置到屏幕中心
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 当点击窗口的关闭按钮时退出程序(没有这一句,程序不会退出)
        jf.setVisible(true);
        
        //监听按钮
        btnTop.addActionListener(new ActionListener() {
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
                try {
    
                	fileRead(textFieldTop.getText());
				} catch (Exception e1) {
    
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
            }
        });
        btnLow.addActionListener(new ActionListener() {
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
                try {
    
					fileWrite(textFieldLow.getText());
				} catch (Exception e1) {
    
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
            }
        });
	}
	public void fileRead(String fileName) throws Exception{
    
		File f = new File(fileName);
		FileInputStream fip = new FileInputStream(f);
        // 构建FileInputStream对象
 
        InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
        // 构建InputStreamReader对象,编码与写入相同
 
        StringBuffer sb = new StringBuffer();
        while (reader.ready()) {
    
            sb.append((char) reader.read());
            // 转成char加到StringBuffer对象中
        }
        String content = sb.toString();
        countWords(content);
        textArea.setText(fileContent);
        reader.close();
        // 关闭读取流
 
        fip.close();
        // 关闭输入流,释放系统资源
	}
	public void fileWrite(String fileName) throws Exception{
    
		File f = new File(fileName);
        FileOutputStream fop = new FileOutputStream(f);
        // 构建FileOutputStream对象,文件不存在会自动新建
 
        OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
        // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
 
        writer.append(fileContent);
 
        writer.close();
        // 关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
 
        fop.close();
        // 关闭输出流,释放系统资源
       
        textArea.setText("写入成功");
	}
	public void countWords(String str){
    

        Map<String, Integer> map=new HashMap<String, Integer>();        
        Pattern p=Pattern.compile("\\b[a-zA-Z-]+\\b");//正则表达式
        Matcher m=p.matcher(str);
        while(m.find()){
    
            String mstr=m.group();
            if(map.containsKey(mstr)){
    
                map.put(mstr,map.get(mstr)+1);
            }else{
    
                map.put(mstr, 1);
            }
        }
        Set<Entry<String, Integer>> entrySet = map.entrySet();
        Iterator<Entry<String,Integer>> it=entrySet.iterator();
        StringBuffer sBuffer = new StringBuffer();
        sBuffer.append("单词	数量"+"\r\n");
        while(it.hasNext()){
    
            Entry<String, Integer> next = it.next();
            System.out.println(next.getKey()+" "+next.getValue());
            sBuffer.append(next.getKey()+"	 "+next.getValue()+"\r\n");
        }
        fileContent = sBuffer.toString();
    }

}

参考:
https://blog.csdn.net/xietansheng/article/details/72814492
https://www.jb51.net/article/122698.htm


Java (Swing)文件版学生信息管理系统(JTable实现)

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43901693/article/details/103192186

智能推荐

Mongodb 3.4.24 复制集构建_mongoversion v3.4.24 replication: master-程序员宅基地

文章浏览阅读522次。​​​​​​准备3个节点,我这里的IP及hostname分别是:192.168.31.164 mongodb-master192.168.31.165 mongodb-slave192.168.31.167 mongodb-arbiter版本:mongodb-linux-x86_64-rhel70-3.4.24.tgz同时节点需要完成:关闭防火墙、SSH..._mongoversion v3.4.24 replication: master

字符集ISO-8859-1_iso-8859-1字符-程序员宅基地

文章浏览阅读968次。Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。_iso-8859-1字符

CQRS思路-程序员宅基地

文章浏览阅读89次。[code="java"]http://www.cnblogs.com/netfocus/p/5184182.html[/code]_汤雪华 阿里巴巴

毫米波点云生成论文 阅读笔记 | 3D Point Cloud Generation with Millimeter-Wave Radar_xinyu zhang-程序员宅基地

文章浏览阅读1.6k次。Kun Qian, Zhaoyuan He, Xinyu ZhangUCSDProceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies (ACM IMWUT)内容在CSDN、知乎和微信公众号同步更新Extremely low resolution due to its small form factor only generates intensity maps with strong ref_xinyu zhang

负数取模为正数_负数对正数取模-程序员宅基地

文章浏览阅读2.3k次,点赞5次,收藏5次。(a % b + b) % b_负数对正数取模

录制ios 命令行工具_录制音频的简单命令行工具-程序员宅基地

文章浏览阅读182次。录制ios 命令行工具 机器学习和自然语言处理通过给人以声音来改变我们与设备的关系。 视障人士尤其从这些技术中受益,但大多数语音银行都把那些像我的母语Odia这样说英语的人基本抛在了后面。 当泰米尔语 维基百科上的 T. Shrinivasan开创了录音机语音教学工具时 ,他可能没有意识到他的开源工具对像我这样的用户有多大用处。 我在寻找一个简单的工具,该工具可以让我在短时间内记录大量单词,..._ios语音控制录制命令

随便推点

Mxnet学习笔记(3)--自定义Op_mxnet customop 训练慢-程序员宅基地

文章浏览阅读4.6k次,点赞3次,收藏5次。Mxnet CustomOp_mxnet customop 训练慢

javac命令和java命令_javac 和java 执行的文件名可以不一样吗-程序员宅基地

文章浏览阅读1.1k次。1、两个命令可以大写,也可以小写,因为window平台不区分大小写。2、java源文件文件名需与public类名一致,如果文件中无public类,文件名可以是任意标识符3、javac命令编译生成的class文件,有几个类就会生成几个文件4、格式:“javac –d 生成文件的保存路径 源文件路径”,建议总是写-d后面语句,好处就是如果原文件有包,会在当前目录自动生成包文件夹,如果..._javac 和java 执行的文件名可以不一样吗

@resource、@Autowired、@Service在一个接口多个实现类中的应用_@resource 接口与service-程序员宅基地

文章浏览阅读1.8w次,点赞10次,收藏15次。Spring在没有引入注解之前,传统的Spring做法是使用.xml文件来对bean进行注入,所有的内容都需要配置在.xml文件中,使配置和编程分离,却增加了可读性和复杂度。 Spring注解将复杂的配置文件用简单@xxx代替,当出现一个接口多个实现类的时候,究竟是用的哪个实现类呢?示例代码:public interface DataDao{}_@resource 接口与service

NTP相关命令解析_ntpq -p详解-程序员宅基地

文章浏览阅读1.7w次。导读由于ntp服务器时间的设置,网上错综复杂,资料很多,大家随便找个资料,这个不行,找另外的资料,总之对这个不是太了解,这里找了份资料,详细介绍了ntp。万变不离其中,明白了原理,ntp的配置就不在困难了。这里面解决了一些疑问:1.如何查看ntp是否配置成功?2.如何了解ntp列出的参数的含义?3.restrict关键字的作用是什么?# watch ntpq -_ntpq -p详解

通信原理第五、六章_将基带信号转换成极性码,映射-程序员宅基地

文章浏览阅读1.8k次。写在前面:黄色部分,p是书上有公式的要动手写的部分及对应页码文章目录第五章:基带传输系统第六章二进制:M进制:第五章:基带传输系统:波形变换–>信道–>接受滤波器–>抽样判决数字基带信号:短距离有线传输,频谱范围WB 从直流或低频延伸至若干倍1/T数字载波调制信号:无线,光纤信道,经过调制实现信号频谱搬移基带信号码型的设计原则:1.不含直流分量2.高频分量少..._将基带信号转换成极性码,映射

疱疹性结膜炎_带状疱疹经历的四个阶段 知乎-程序员宅基地

文章浏览阅读404次。疱疹性结膜炎特征为角膜上皮呈树枝状病变,与树叶的叶脉相似,末端呈球形.早期症状为异物感,流泪,畏光和结膜充血,随着反复复发,角膜知觉减退或消失,结果可能引起角膜溃疡和永久性角膜瘢痕形成. 盘状角膜炎累及角膜基质,是角膜深层的盘状局限性水肿和混浊,伴有虹膜炎,常在上皮性角膜炎后发生.盘状角膜炎可能代表机体对病毒的免疫反应.不是由反复的单纯疱疹病毒引起的不愈合或愈合极慢的上皮性缺损,被称为无痛性溃疡._带状疱疹经历的四个阶段 知乎