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.youkuaiyun.com/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

内容概要:本文深入探讨了折扣店快消品定价的研究,涵盖快消品与折扣店行业的概述、定价影响因素、定价策略、定价方法、定价技巧及案例分析。快消品行业涉及日常生活用品、食品、饮料等,具有高频次和重复购买的特点。折扣店市场规模不断扩大,主要参与者包括赵一鸣、好特卖等。影响定价的因素包括成本(生产、库存、物流)、市场需求(规模、购买力、需求弹性)、竞争(对手定价策略、市场份额)、产品特性(差异化、品牌形象)、渠道与分销成本、政府政策等。定价策略分为成本导向(成本加成、目标收益)、需求导向(理解价值、需求差异)和竞争导向(随行就市、投标定价)。定价方法包括市场调研、成本加成、竞争比较和价值定价。定价技巧涵盖高价撇脂、渗透定价、价格歧视和捆绑定价。最后通过好特卖、嗨特购、零食很忙的案例分析,展示了不同折扣店的定价策略及其效果。 适合人群:从事快消品行业、折扣店运营的管理人员及对定价策略感兴趣的商业人士。 使用场景及目标:①帮助折扣店管理者了解定价的基本理论和实际操作方法;②为快消品企业提供定价决策支持,优化定价策略;③通过案例分析,提供实际操作中的经验和教训。 其他说明:折扣店在制定快消品定价时,应综合考虑多种因素,灵活运用不同的定价策略和技巧,以应对市场变化,提升竞争力。建议企业定期监控市场动态,分析消费者反馈,不断优化定价方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值