导图 1
GUI
  AWT
  Swing
    编程理念
      MVC模式
        模型M(数据) 和视图V(显示) 分离，通过控制器C将二者松耦合在一起
          观察者模式
          迪米特法则
      监听器（接口回调）
        匿名内部类(就地实例化接口对象)
        窗口类实现监听接口并重写回调方法
        内部类实现监听器接口并重写回调方法
          创建内部类对象作为一个或多个控件的监听器
          内部类可以访问外部类的私有成员(控件)
      缺省适配器
        MouseListener/ MouseMotionListener/MouseWheelListener
          MouseAdapter
        KeyListener
          KeyAdapter
        WindowListener
          WindowAdapter
    窗口
      JFrame
      JDialog
        模拟对话框
        非模拟对话框
      JInternalFrame
        多文档窗口(子窗口)
      JWindow
        无边框窗口
    布局管理器
      BorderLayout
        边界布局管理器
      FlowLayout
        流式布局管理器
      GridLayout
        网格布局管理器
      GridBagLayout
      BoxLayout
        盒子布局管理器
      CardLayout
        卡式布局管理器
      GroupLayout
      SpringLayout
    常用控件
      基本控件
        JLabel
          标签
            Icon
            Font
        JButton
          按钮
        JTextField
          文本框
        JPasswordField
          密码框
        JRadioButton
          单选按钮
            ButtonGroup
        JCheckBox
          复选框
        JCombBox
          下拉列表
            LIstCellRender
        JList
          列表
            ListCellRender
        JTextArea
          文本域
        JOptionPane
          弹出式模态对话框
        JFileChooser
          文件选择器
        JColorChooser
          颜色选择器
      高级控件
        JMenu
          菜单
            JmenuItem
              菜单项
        JPopupMenu
          上下文菜单(右键菜单)
            JMenuItem
              菜单项
        JToolBar
          工具栏
        JEditorPane
          编辑面板
        JProgressBar
          进度条
        JSlider
          滑动条
        JSpinner
          微调器
        JTable
          表格
            TableCellRender
        JTree
          树
            TreeCellRender
      容器
        JPanel
        JScrollPane
          带滚动条
        JSplitPane
          带分割条
        JTabbedPane
          带页签(选项卡)
        JDesktopPane
          可以放子窗口
    绘图
      AWT绘图
        paint(Graphics g)
        uodate(Graphics g)
        repaint()
      Swing绘图
        paintComponent(Graphics g)
        paintBorder(Graphics g)
        paintChildren(Graphics g)
    外观和感觉
      UIManager
        setLookAndFeel()
  JavaFX