catch小说内容-从gui到爬虫(1)

day1&day2-创建窗体

java GUI的类型

1. swing和awt

  • AWT(Abstract Window Toolkit):抽象窗口工具包
    awt会使用操作系统本身的图形库进行运行。由于各个操作系统所拥有的图形库内容不同,为了java系统的可移植性,awt取所有的交集。
    图形库本身包含的内容比较少,为了实现需要的操作,可能需要另外做一些渲染+flip的工作。相对比较低端,会比较浪费时间(相当于运用控件之前还需要先手动写一个控件)

  • Swing:为解决AWT存在的问题而新开发的图形界面包
    swing使用java的代码对AWT功能进行扩展。
    原本使用AWT时操作系统不支持的控件,使用java代码实现各类控件,进行实现。(用java编写了各类控件,封装在库中)

  • 区别和联系
    AWT使用系统的图形库,由于取交集,所包含的范围比较窄。swing使用java代码模拟控件,不使用本地方法。
    AWT使用本地方法,各个平台的图形表现取决于操作系统,但速度快。swing使用库的控件,平台表现一致,运行速度相对慢。

  • 参考自:https://blog.csdn.net/iamluole/article/details/8142257

2.swing结构

  • 结构图

  • 三类容器

    • 结构图

    • 顶层容器
      JFrame:窗口
      JDialog:对话框
      JApplet:Swing组件中的Java Applet

    • 中间容器
      Jpanel:面板,装载一些容器
      JScrolPane:类似JPanel,提供滚动条(Jpanel超出范围的部分无法看到)
      JTabbedPane:多任务卡的Panel,类似浏览器的界面切换
      JToolBar:工具栏

  • 参考自:http://c.biancheng.net/view/1206.html

创建一个窗口

1.初始化一个窗口

  • 设置标题:setTitle()

  • 设置大小:setSize()

  • 设置位置:setLocation()

  • 设置关闭方法:setDefaultCloseOperation()

    • 这是JFrame的方法,setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
    • 如果使用AWT的Frame创建窗体,需要另外设置监听事件,在点击关闭键以后运行退出程序
          this.addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent e) {
                  System.exit(0);
              }
          });
      
  • 设置窗口可见:setVisible(true)

  • 运行

2.添加控件,丰富界面

  • 添加panel
    import jpanel:import javax.swing.JPanel;
    初始化:JPanel panel= new JPanel()
    在窗口上添加面板:add(panel);

  • 添加标签
    初始化:JLabel label1= new JLabel()
    在面板上添加标签:panel.add(label1)

  • 运行显示结果

  • 参考:http://c.biancheng.net/view/1209.html

3.设置布局,规范化界面

  • 布局的作用
    控件之间保持相对距离,根据窗口的大小,间距会发生变化
    不需要计算距离,也不用担心控件会重叠

  • 布局的分类

    • BorderLayout(边框布局管理器)

      • 大致分为东南西北中五块
      • 不要求每个区域都有组件,如果区域内没有组件,会用center区域补充
      • 每个区域只能填充一个组件,后添加的组件会覆盖前一个组件
      • 实验代码
                    setLayout(new BorderLayout());
                    JPanel panel=new JPanel();
                    add(panel,BorderLayout.NORTH);
                    JLabel label1=new JLabel("输入网址:");
                    panel.add(label1);
                    JLabel label2=new JLabel("标签2");
                    panel.add(label2);
                    JLabel label3=new JLabel("标签3");
                    add(label3,BorderLayout.SOUTH);
                    JLabel label4=new JLabel("标签4");
                    add(label4,BorderLayout.SOUTH);
        
      • 显示结果

        窗体的布局为borderlayout,north添加了panel作为组件,south则添加了两个标签
        panel是一个组件,在panel上添加标签不会产生替换
        而直接在布局上添加label,只显示最新的标签
    • FlowLayout(流式布局管理器)

      • 根据组件按照从上到下、从左到右的顺序自由添加,可以在构造函数中设置组件之间的间距

      • 构造方法
        FlowLayout()
        FlowLayout(对齐方式) :对齐方式FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER
        FlowLayout(对齐方式,横向间距,纵向间距)

      • 实验代码

                    setLayout(new FlowLayout(FlowLayout.LEFT,20,20));
                    JPanel panel=new JPanel();
                    panel.setBackground(Color.white);
                    add(panel);
                    JLabel label1=new JLabel("输入网址:");
                    panel.add(label1);
                    JLabel label2=new JLabel("标签2");
                    panel.add(label2);
                    JLabel label3=new JLabel("标签3");
                    add(label3);
                    JLabel label4=new JLabel("标签4");
                    add(label4);
        
      • 实验结果

    • CardLayout(卡片布局管理器)
      具有show方法显示某个panel
      图示代码
      在p1上添加3个按钮,在p2添加3个文本框。
      界面上添加卡片式布局的panel,向这个panel添加p1和p2
      显示面板
      CardLayout cl=(CardLayout)(cards.getLayout());
      cl.show(cards,“card1”); //调用show()方法显示面板2
      show哪个面板,显示哪个面板(有button按钮触发会更直观)

    • GridLayout(网格布局管理器)

      • 可以创建指定行和列的布局

      • 构造方法
        GridLayout(行数,列数)
        GridLayout(行数,列数,横向间隔,纵向间隔)

      • 显示结果

    • GridBagLayout(网格包布局管理器)

    • BoxLayout(盒式布局管理器)

  • 参考:http://c.biancheng.net/view/1212.html

4.添加文本框和按键

  • 添加文本框

    • 构造方法
      JTextField()
      JTextField(初始化内容)
      JTextField(宽度)
      JTextField(内容,宽度)

    • 实验代码

             JTextField text1=new JTextField(35);
             panel.add(text1);
      
    • 结果

    • 参考:http://c.biancheng.net/view/1219.html

  • 添加按钮

    • 构造方法
      JButton()
      JButton(图标)
      JButton(文字)
      JButton(文字,图标)

    • 添加事件监听

      • 引入包:import java.awt.event
      • 对button进行动作监听:button.addActionListener()
      • 新建动作监听函数函数:new ActionListener()
      • 有该动作,进行事件触发:public void actionPerformed(ActionEvent e)
      • 完整实践监听代码
        button1.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            text1.setText("yes!");
                            //				functions.catchContent( text1.getText() );
                            }
        
                        });
        
  • 实验效果

  • 参考:http://c.biancheng.net/view/1235.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值