SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
北京圣思园科技有限公司
http://www.shengsiyuan.com
本讲内容:

关于Swing

Swing组件和容器
1. Swing:
• 是第二代GUI开发工具
• 它建立在AWT之上,但用新版本的组件替
  代了旧版本的组件。
• 它提供了许多新的组件和相关的API
2. The Swing API 发布在:
  – JDK 1.2
  – JFC 1.1 (for use with JDK 1.1)

3. The Swing API 功能是强大的,灵活的和广
  泛的。例如 JFC 1.1 有 15 public
  packages 。
 我们经常用的有两个包:
  – javax.swing
  – javax.swing.event

  注:AWT components 在 java.awt package 中
1   概览
2   Swing Components 分类
3   顶层容器
4   JFrame
5   JDialog
6   JPanel
7   创建菜单
8   JComponent Class
1. 概览:




SwingApplication 创建了四个常用的 Swing components:
• a frame, or main window (JFrame)
• a panel (JPanel)
• a button (JButton)
• a label (JLabel)
容器与组件包含继承关系图表:
Your Application
                                Swing
  AWT
                                          AWT
Component                                             Java 2D
   s        Window   Dialog    Frame
                                          Event

Button                                              Drag and Drop
Frame
ScrollBar    Font    Color    Graphics   Tool Kit
                                                    Accessibility
…


                         AWT

                         JFC
JButton
                                               JCheckBoxMenultem
             AbstractButton
                               JMenultem             JMenu
                                              JRadioButtonMnultem

                                                  JCheckBox
             JComboBox        JToggleButton
                                                 JRadioButton
                 JLabel
                  JList
JComponent
               JMenuBar
                JPanel
             JPopupMenu
               JScrollBar
                                JEditorPane       JTextPane
              JScrollPane
                                 JTextArea
             JTextComponent
                                 JTextField     JPasswordField
JColorChooser
               JFileChooser
              JInternalFrame
              JLayeredPane         JDesktopPane
               JOptionPane
               JProgressBar
                JRootPane          JPopupMenuSeparator
JComponent      JSeparator
                   JSlider           JToolBarSeparator
                JSplitPane
               JTabbedPane
                   JTable
                 JToolBar
                  JToolTip
                    JTree
                 JViewport

             JIternalFrame.JDesktopIcon
2 Swing Components 分类:
• 顶层容器
• 中间容器
• 原子组件
顶层容器
java 提供了三个顶层容器:JFrame, JDialog, 和
  JApplet。
顶层容器

特点:
• 显示在屏幕上的每个组件都必须在一个包含继
  承中。每一个包含继承都有一个顶层容器作为
  它的根。

• 每一个顶层容器都有一个content pane ,它
  包含了顶层容器中的所有组件

• 菜单在顶层容器中,但在content pane 之外
  。
顶层容器

包含继承图如下:
顶层容器
1. 在Content Pane 中添加组件

    有两种方式:
•    topLevelContainer.getContentPane().add(yellowLabel,
     BorderLayout.CENTER);

或:
•     JPanel contentPane = new JPanel();
        … …
      topLevelContainer.setContentPane(contentPane);
顶层容器
2. 添加菜单条
•   JMenuBar cyanMenuBar = new JMenuBar();
•   frame.setJMenuBar(cyanMenuBar);
JFrame
是一个带有标题和可变大小边框的窗口。

任何一个图形界面应用程序都必须至少有一个
  JFrame.

参见程序:
FrameDemo.java
TopLevelDemo.java
panel

•   为其它组件提供一个容器。便于组织和显
    示组件。
•   还可以包含子panel

参见程序:MyPanel.java
创建菜单:
步骤:
1.创建一个 MenuBar 对象, 将其加入一个菜单容器,
   例如: Frame .

2.创建 一个或多个Menu 对象,将其加入menu bar
   对象.

3.创建 一个或多个MenuItem objects,对象,将其加
   入相应的menu object.

参见程序:MenuTest.java
JComponent Class
   除了顶层容器,Swing中所有组件(中间容器和
   原子组件)都从JComponent类中继承。

例如: JPanel, JScrollPane, JButton, JTable( 以
   J开头的组件类)。
Component

Container

JComponent
JComponent Class
JComponent Class API:
 它从Component and Container 继承了许多方法,同时
  也提供了一些新的方法。它为它的继承者提供了如下
  常用功能:
•   Customizing Component Appearance
•   Setting Component State
•   Handling Events
•   Painting Components
•   Dealing with the Containment Hierarchy
•   Laying Out Components
•   Getting Size and Position Information
•   Specifying Absolute Size and Position
• BorderWindow.java

• FlowWindow.java

• GridWindow.java

• MultiListener.java
Color类
 Color类将颜色按照sRGB标准格式进行封装,该格
  式中红、绿、蓝三原色的取值范围都是0~255。
 Color类定义了多个构造方法,常用的有:
    public Color(int r, int g, int b)
    public Color(int r, int g, int b, int a) // a -- 透明度参数
    Color c = new Color(200, 170, 90);
    Color d = new Color(200, 170, 90, 120);
 在GUI设计中使用Color类
    Button b = new Button(“Test”);
    Color c = new Color(200, 170, 90);
    b.setBackground(c)

Mais conteúdo relacionado

Destaque

AutoLisp Reference
AutoLisp ReferenceAutoLisp Reference
AutoLisp ReferenceLiu Tun
 
沈阳师范大学课程实践 Android开发应用
沈阳师范大学课程实践 Android开发应用沈阳师范大学课程实践 Android开发应用
沈阳师范大学课程实践 Android开发应用ArBing Xie
 
[圣思园][Java SE]Ooad与uml lesson 2
[圣思园][Java SE]Ooad与uml lesson 2[圣思园][Java SE]Ooad与uml lesson 2
[圣思园][Java SE]Ooad与uml lesson 2ArBing Xie
 
Silastial Glass Technology With Photographs
Silastial Glass Technology With PhotographsSilastial Glass Technology With Photographs
Silastial Glass Technology With Photographsricksilas
 
[圣思园][Java SE]Contest shengsiyuan
[圣思园][Java SE]Contest shengsiyuan[圣思园][Java SE]Contest shengsiyuan
[圣思园][Java SE]Contest shengsiyuanArBing Xie
 
Människans historia
Människans historiaMänniskans historia
Människans historiaelisabeth
 
Usa blir en stormakt
Usa blir en stormaktUsa blir en stormakt
Usa blir en stormaktelisabeth
 
Presentación clase 2 e-learning class
Presentación  clase 2 e-learning classPresentación  clase 2 e-learning class
Presentación clase 2 e-learning classSergio Silvio Falasco
 

Destaque (10)

AutoLisp Reference
AutoLisp ReferenceAutoLisp Reference
AutoLisp Reference
 
沈阳师范大学课程实践 Android开发应用
沈阳师范大学课程实践 Android开发应用沈阳师范大学课程实践 Android开发应用
沈阳师范大学课程实践 Android开发应用
 
[圣思园][Java SE]Ooad与uml lesson 2
[圣思园][Java SE]Ooad与uml lesson 2[圣思园][Java SE]Ooad与uml lesson 2
[圣思园][Java SE]Ooad与uml lesson 2
 
Presentación1 tecno
Presentación1 tecnoPresentación1 tecno
Presentación1 tecno
 
Silastial Glass Technology With Photographs
Silastial Glass Technology With PhotographsSilastial Glass Technology With Photographs
Silastial Glass Technology With Photographs
 
[圣思园][Java SE]Contest shengsiyuan
[圣思园][Java SE]Contest shengsiyuan[圣思园][Java SE]Contest shengsiyuan
[圣思园][Java SE]Contest shengsiyuan
 
Människans historia
Människans historiaMänniskans historia
Människans historia
 
Usa blir en stormakt
Usa blir en stormaktUsa blir en stormakt
Usa blir en stormakt
 
Usa klimat
Usa klimatUsa klimat
Usa klimat
 
Presentación clase 2 e-learning class
Presentación  clase 2 e-learning classPresentación  clase 2 e-learning class
Presentación clase 2 e-learning class
 

Mais de ArBing Xie

[圣思园][Java SE]Java se lesson 3
[圣思园][Java SE]Java se lesson 3[圣思园][Java SE]Java se lesson 3
[圣思园][Java SE]Java se lesson 3ArBing Xie
 
[圣思园][Java SE]Java se lesson 15
[圣思园][Java SE]Java se lesson 15[圣思园][Java SE]Java se lesson 15
[圣思园][Java SE]Java se lesson 15ArBing Xie
 
[圣思园][Java SE]Strategy
[圣思园][Java SE]Strategy[圣思园][Java SE]Strategy
[圣思园][Java SE]StrategyArBing Xie
 
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection[圣思园][Java SE]Reflection
[圣思园][Java SE]ReflectionArBing Xie
 
[圣思园][Java SE]Observer
[圣思园][Java SE]Observer[圣思园][Java SE]Observer
[圣思园][Java SE]ObserverArBing Xie
 
[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]NetworkArBing Xie
 
[圣思园][Java SE]Jdk5
[圣思园][Java SE]Jdk5[圣思园][Java SE]Jdk5
[圣思园][Java SE]Jdk5ArBing Xie
 
[圣思园][Java SE]Java se lesson 22
[圣思园][Java SE]Java se lesson 22[圣思园][Java SE]Java se lesson 22
[圣思园][Java SE]Java se lesson 22ArBing Xie
 
[圣思园][Java SE]Java se lesson 21
[圣思园][Java SE]Java se lesson 21[圣思园][Java SE]Java se lesson 21
[圣思园][Java SE]Java se lesson 21ArBing Xie
 
[圣思园][Java SE]Java se lesson 20
[圣思园][Java SE]Java se lesson 20[圣思园][Java SE]Java se lesson 20
[圣思园][Java SE]Java se lesson 20ArBing Xie
 
[圣思园][Java SE]Java se lesson 17
[圣思园][Java SE]Java se lesson 17[圣思园][Java SE]Java se lesson 17
[圣思园][Java SE]Java se lesson 17ArBing Xie
 
[圣思园][Java SE]Java se lesson 16
[圣思园][Java SE]Java se lesson 16[圣思园][Java SE]Java se lesson 16
[圣思园][Java SE]Java se lesson 16ArBing Xie
 
[圣思园][Java SE]Java se lesson 13
[圣思园][Java SE]Java se lesson 13[圣思园][Java SE]Java se lesson 13
[圣思园][Java SE]Java se lesson 13ArBing Xie
 
[圣思园][Java SE]Java se lesson 12
[圣思园][Java SE]Java se lesson 12[圣思园][Java SE]Java se lesson 12
[圣思园][Java SE]Java se lesson 12ArBing Xie
 
[圣思园][Java SE]Java se lesson 11
[圣思园][Java SE]Java se lesson 11[圣思园][Java SE]Java se lesson 11
[圣思园][Java SE]Java se lesson 11ArBing Xie
 
[圣思园][Java SE]Java se lesson 10
[圣思园][Java SE]Java se lesson 10[圣思园][Java SE]Java se lesson 10
[圣思园][Java SE]Java se lesson 10ArBing Xie
 
[圣思园][Java SE]Java se lesson 9
[圣思园][Java SE]Java se lesson 9[圣思园][Java SE]Java se lesson 9
[圣思园][Java SE]Java se lesson 9ArBing Xie
 
[圣思园][Java SE]Java se lesson 8
[圣思园][Java SE]Java se lesson 8[圣思园][Java SE]Java se lesson 8
[圣思园][Java SE]Java se lesson 8ArBing Xie
 
[圣思园][Java SE]Java se lesson 5
[圣思园][Java SE]Java se lesson 5[圣思园][Java SE]Java se lesson 5
[圣思园][Java SE]Java se lesson 5ArBing Xie
 
[圣思园][Java SE]Java se lesson 4
[圣思园][Java SE]Java se lesson 4[圣思园][Java SE]Java se lesson 4
[圣思园][Java SE]Java se lesson 4ArBing Xie
 

Mais de ArBing Xie (20)

[圣思园][Java SE]Java se lesson 3
[圣思园][Java SE]Java se lesson 3[圣思园][Java SE]Java se lesson 3
[圣思园][Java SE]Java se lesson 3
 
[圣思园][Java SE]Java se lesson 15
[圣思园][Java SE]Java se lesson 15[圣思园][Java SE]Java se lesson 15
[圣思园][Java SE]Java se lesson 15
 
[圣思园][Java SE]Strategy
[圣思园][Java SE]Strategy[圣思园][Java SE]Strategy
[圣思园][Java SE]Strategy
 
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
 
[圣思园][Java SE]Observer
[圣思园][Java SE]Observer[圣思园][Java SE]Observer
[圣思园][Java SE]Observer
 
[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]Network
 
[圣思园][Java SE]Jdk5
[圣思园][Java SE]Jdk5[圣思园][Java SE]Jdk5
[圣思园][Java SE]Jdk5
 
[圣思园][Java SE]Java se lesson 22
[圣思园][Java SE]Java se lesson 22[圣思园][Java SE]Java se lesson 22
[圣思园][Java SE]Java se lesson 22
 
[圣思园][Java SE]Java se lesson 21
[圣思园][Java SE]Java se lesson 21[圣思园][Java SE]Java se lesson 21
[圣思园][Java SE]Java se lesson 21
 
[圣思园][Java SE]Java se lesson 20
[圣思园][Java SE]Java se lesson 20[圣思园][Java SE]Java se lesson 20
[圣思园][Java SE]Java se lesson 20
 
[圣思园][Java SE]Java se lesson 17
[圣思园][Java SE]Java se lesson 17[圣思园][Java SE]Java se lesson 17
[圣思园][Java SE]Java se lesson 17
 
[圣思园][Java SE]Java se lesson 16
[圣思园][Java SE]Java se lesson 16[圣思园][Java SE]Java se lesson 16
[圣思园][Java SE]Java se lesson 16
 
[圣思园][Java SE]Java se lesson 13
[圣思园][Java SE]Java se lesson 13[圣思园][Java SE]Java se lesson 13
[圣思园][Java SE]Java se lesson 13
 
[圣思园][Java SE]Java se lesson 12
[圣思园][Java SE]Java se lesson 12[圣思园][Java SE]Java se lesson 12
[圣思园][Java SE]Java se lesson 12
 
[圣思园][Java SE]Java se lesson 11
[圣思园][Java SE]Java se lesson 11[圣思园][Java SE]Java se lesson 11
[圣思园][Java SE]Java se lesson 11
 
[圣思园][Java SE]Java se lesson 10
[圣思园][Java SE]Java se lesson 10[圣思园][Java SE]Java se lesson 10
[圣思园][Java SE]Java se lesson 10
 
[圣思园][Java SE]Java se lesson 9
[圣思园][Java SE]Java se lesson 9[圣思园][Java SE]Java se lesson 9
[圣思园][Java SE]Java se lesson 9
 
[圣思园][Java SE]Java se lesson 8
[圣思园][Java SE]Java se lesson 8[圣思园][Java SE]Java se lesson 8
[圣思园][Java SE]Java se lesson 8
 
[圣思园][Java SE]Java se lesson 5
[圣思园][Java SE]Java se lesson 5[圣思园][Java SE]Java se lesson 5
[圣思园][Java SE]Java se lesson 5
 
[圣思园][Java SE]Java se lesson 4
[圣思园][Java SE]Java se lesson 4[圣思园][Java SE]Java se lesson 4
[圣思园][Java SE]Java se lesson 4
 

Último

函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptxNCU MCL
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptxNCU MCL
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】黑客 接单【TG/微信qoqoqdqd】
 
20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_patternJamie (Taka) Wang
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptxNCU MCL
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxNCU MCL
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLPJamie (Taka) Wang
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven designJamie (Taka) Wang
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptxNCU MCL
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxNCU MCL
 

Último (15)

函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
 
20161027 - edge part2
20161027 - edge part220161027 - edge part2
20161027 - edge part2
 
Entities in DCPS (DDS)
Entities in DCPS (DDS)Entities in DCPS (DDS)
Entities in DCPS (DDS)
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
 
20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_pattern
 
20200323 - AI Intro
20200323 - AI Intro20200323 - AI Intro
20200323 - AI Intro
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
 
20200226 - AI Overview
20200226 - AI Overview20200226 - AI Overview
20200226 - AI Overview
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven design
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
 
20151111 - IoT Sync Up
20151111 - IoT Sync Up20151111 - IoT Sync Up
20151111 - IoT Sync Up
 

[圣思园][Java SE]Swing