zoukankan      html  css  js  c++  java
  • Java GUI图形界面开发工具

    Applet 应用程序

        一种可以在 Web 浏览器中执行的小程序,扩展了浏览器中的网页功能。
    缺:
    1、需要下载 Applet 及其相关文件
    2、Applet 的功能是受限制的
    优:
    3、无需安装
    4、平台无关性
    5、安全
     
    Applet 的生命周期
        编写一个 Applet 程序,需要继承 JApplet 类,这个类提供了 Applet 程序的基本行为方式,只需要覆写其中的方法就可以完成我们自己的 Applet 程序。
        生命周期
    1、初始化阶段:init 方法
        在 Applet 执行之初,init 方法会自动被调用。init 方法的作用是完成 Applet 的初始化工作。一般,图形组件的初始化和版面分配都在这个方法中完成。在整个生命周期里,init 方法只会被调用一次。
    2、执行阶段:start 方法
        在完成初始化后,Applet 就会自动调用 start 方法,执行其中的代码。与 init 方法不同的是,start 方法可能在整个生命周期中会被调用多次。它不仅仅是在 init 方法后被调用,在 Applet 当前窗口被激活时,start 方法也会被调用。
    3、中止阶段:stop 方法
        当不需要 Applet 程序,或者说关闭 Applet 程序的时候,会调用 stop 方法。在 stop 方法中,执行一些清理或者关闭某些耗费资源的操作。在整个生命周期里,stop 方法只会被调用一次。
    4、释放资源:destroy 方法
        在调用 stop 方法后,调用 destroy 方法完成最后的资源释放等工作。destroy 方法也只会被执行一次。
     
    重量级的图形开发工具——AWT库(java.awt包)
      java中最早出现的图形开发工具,但 AWT 不太受人欢迎。
    缺点:
    1、失去灵活性。大部分组件含有native code代码。无法根据需要任意改变组件的外观,无法在组件上任意地添加团
    2、想要个性化改变 AWT 的控件,需要自己编写 C 语言的 native code 代码,没换一次平台要重写和编译自己的 native code 代码。
     
    控件说明:
    1、容器 
    2、组件
      Label 标签,用于显示文本。
      Button 按钮,点击按钮,会产生 ActionEvent 事件,利用 ActionListener 接口该事件 
      TextField 文本输入框,在这个组件中可以输入文本
      CheckBox 复选框,提供用户多项选择的组件
      Choice 下拉式菜单,以菜单的形式提供选择的组件
    ......
     
    3、布局管理器
      BoderLayout 将版面分成五个区域:东、西、南、北、中。可以将组件放入这五个区域中,但每个区域只能放入一个组件
      FlowLayout 顺序横向摆放组件,若一行无法摆放所有组件时,下一行接着从左到右的顺序加入组件
      GridLayout 以行和列的方法排列组件。利用 GridLayout 将版面设置为几行和几列,然后横向顺序加入组件。
      CardLayout 将容器垂直分层,每一次只放一个组件,把组件放入不同的层并折叠起来,每次只能看到最上层的组件。
      GridBagLayout 最具灵活性,可以设置组件放置的具体位置和大小。
     
    事件监听与事件处理:
    1、事件 
    2、事件源 
    3、事件监听
      捕抓和处理该事件。委托事件模式(Delegation Model),事件源不同的事件委托给不同的事件监听类进行监听和处理。这种委托模式的另一个特点,就是我们只需要将感兴趣的时间委托给相应的事件监听类,对于那些不需要关心的事件,我们不需要做任何事情,包括委托。
     
    让界面开发更容易——Swing
        AWT 无法满足我们对图形化界面设计的发展需求,因此就有了 Swing。Swing 是在 AWT 的基础上发展起来的,它突破了 AWT 的局限性,也弥补了 AWT 致命的缺陷,它被设计成一个轻量级的图形开发工具。
        Swing 是个轻量级的图形开发工具,没有 native code,也不依赖操作系统。 
     
    容器与控件说明
         容器
    1、顶层容器
      Swing 中的顶层容器包括 JFrame、JApplet、JDialog 和 JWindow。说是顶层的容器,其实是理解应该是最底层的容器,因为它最接近操作系统。和 Swing 的其他容器相比,顶层容器的特点就是这些容器并非轻量级容器,还有一定的 native code,Swing需要这些顶层容器和操作系统进行通讯。值得注意的是,和 AWT 容器不同,顶层容器中无法直接加入 JButton 等组件,需要借助其他容器加入顶层容器。
     
    2、中间层容器
      Swing 的中间层容器都是轻量级,包括 JPanel、JScrollPane、JSplitPane 和 JToolBar 等。这些中间层的容器有着自己的特点。例如,JPnael 支持 double buffering 功能,有利于处理动画;JScrollPane 支持滚动的窗口;JSplitPane 能将版面划分为两个区域。
     
    3、特殊容器
      Swing 中特殊容器包括:JInternalFrame 和 JLayeredPane 等。JInternalFrame 的使用几乎和 JFrame 一样,但它是轻量级容器,可以用来建立虚拟界面; JLayeredPane 是一个分层的容器,其实其他的容器都是 JLayeredPane 容器中的一层。
     
        Swing 的组件
      在 AWT 中有的组件,在 Swing 中都有,只是在名字前多加了J,例如 AWT 中 Button 在 Swing 中为 JButton。由于Swing中组件都是轻量级组件,AWT中组件为重量级,还是那句话,Swing中组件相比AWT,在各方面都有了极大的改善。
      在实现互动组件方面,Swing 中组件包括 JButton、ComboBox、JList、JMenu、JTextArea 和 JTextField等
      在显示方面,实现不可编辑的组件包括 JLabel 和 JProgressBar 等组件;实现可编辑的显示组件包括 JColorChooser、JFileChoose、JFileChooser 和 JTable 等。
      
        Swing的布局控制
        Swing的事件监听与事件处理机制
      同 AWT 差不多……
     
     
     

    上大学那会儿比 较主流的Java图形开发插件是:Visual Editor 和 SWT Designer, 不久又出了个Jigloo, 但去官网看了下发现这个东西也很久没有更新了,不过据说短小精悍,五脏俱全。SWT Designer不久前也被Google收购后重新整合进自己的产品中,然后开源了,现在名字叫:WindowBuilder Pro,看上去界面组件很丰富强大的样子,支持Swing, AWT, SWT, 以及Google自家的GWT等等。

    目前JAVA图形界面开发主流工具如下:

    1. WindowBuilder Pro

    http://www.eclipse.org/windowbuilder/

    https://developers.google.com/java-dev-tools/download-wbpro?hl=zh-CN

     

    2. Jigloo(最新版是2010年更新的,看来这个项目现在已经不再做了)
    http://www.cloudgarden.com/jigloo/

     

    3. 也可以直接用IDE如:NetBeansMyEclipse,二者中都有自带的图形开发拖拽工具


    相关阅读:
    Eclipse进行可视化的GUI开发3大GUI插件
    http://www.cnblogs.com/NationWoo/archive/2011/05/31/2065176.html

  • 相关阅读:
    [ jquery 选择器 :hidden ] 此方法选取匹配所有不可见元素,或者type为hidden的元素
    剑指 Offer 03. 数组中重复的数字 哈希
    LeetCode 1736. 替换隐藏数字得到的最晚时间 贪心
    Leetcode 1552. 两球之间的磁力 二分
    Leetcode 88. 合并两个有序数组 双指针
    LeetCode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
    LeetCode 1743. 相邻元素对还原数组 哈希
    LeetCode 1745. 回文串分割 IV dp
    剑指 Offer 47. 礼物的最大价值 dp
    剑指 Offer 33. 二叉搜索树的后序遍历序列 树的遍历
  • 原文地址:https://www.cnblogs.com/timssd/p/4688035.html
Copyright © 2011-2022 走看看