JavaSE Swing程序结构、组件分类及基本规则

{相关信息}
1. 程序结构
Swing 的程序设计一般可按照以下流程进行:
(1)通过 import 引入 swing 包。
(2)设置 GUI 的“外观界面风格”。
(3)创建顶层容器。
(4)创建按钮和标签等组件。
(5)将组件添加到顶层容器。
(6)在组件周围添加边界。
(7)进行事件处理。

2. 组件分类
Jcomponent
类派生于 Container 类。并不是 Swing 的所有组件都继承了 JComponent 类,凡是派生于 Container
类的组件都可以作为容器使用。Swing 组件从功能上可分为顶层容器、中间容器、特殊容器、基本控件、信息显示组件和编辑信息组件。
顶层容器:Jframe、Japplet、Jdialog、JWindow。
中间容器:Jpanel、JscrollPane、JsplitPane、JToolBar。
特殊容器:GUI 中特殊作用的中间层,例如 JinternalFrame、JlayeredPane、JRootPane。
基本控件:人机交互的基本组件,如 Jbutton、JcomboBox、Jlist、Jmenu、Jslider、JtextField。
信息显示组件:组件仅仅为显示信息,但不能编辑,如 Jlabel、JprogressBar、ToolTip。
编辑信息组件:向用户显示可被编辑信息的组件,例如 JcolorChooser、JfileChoose、JfileChooser、Jtable、JtextArea。

另外,JComponent 类的一些特殊功能包括边框设置、双缓冲区、提示信息、键盘导航和支持布局。
边框设置:使用 setBorder()方法设置组件外围边框,如果不设置边框就会为组件的外围留出空白。
双缓冲区:为了改善组件的显示效果,采用双缓冲技术。JComponent 组件默认是双缓冲的,不必要自己写代码,可以通过 setDoubleBuffered(false)关闭双缓冲区。
提示信息:setTooltipText()方法可为组件设置提示信息,为用户提供帮助。
键盘导航:registerKeyboardAction()方法可以实现键盘代替鼠标操作。
支持布局:用户可以设置组件最大、最小和设置对齐参数值等方法,指定布局管理器的约束条件。

3)使用Swing的基本规则
与 AWT 组件不同,Swing 不能直接在顶层容器中添加组件。Swing 组件必须添加到与顶层容器相关的内容面板上,内容面板是一个普通的轻量级组件,还要避免使用非 Swing 轻量级组件。在顶层容器 JFrame 对象中添加组件有以下两种方式:
(1)用 getContentPane()方法获得容器的内容面板,直接添加组件,格式如下:

Container c = frame.getContentPane(); //获取窗口内容面板
JPanel pane = new JPanel();  //创建面板
c.add(pane);  //在容器中添加面板

(2)建立一个中间容器对象(Jpanel 或 JdesktopPane),将组件添加到中间容器对象内,然后通过 setContentPane()方法将该容器设置为顶层容器 frame 的内容面板。

JPanel pane = new JPanel();
pane.add(new JButton("OK"));
frame.setContentPane(pane);

{相关代码}

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * Created by re-x on 11/4/14.
 */
public class SwingApplication {

    public static void main(String[] args) {
        // 2) set GUI looking style
        try {
            // set window style
            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
        }
        catch (Exception e) {
            e.printStackTrace();
        }

        // 3) create top container
        final JFrame frame = new JFrame("Swing app");
        Container c = frame.getContentPane();
        JPanel panel = new JPanel();
        c.add(panel);
        panel.setLayout(new FlowLayout());

        // 4) create component
        final JLabel label = new JLabel();
        Button button = new Button("click me");
        panel.add(label);
        panel.add(button);

        // 5) action process
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("Welcome");
            }
        });

        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                frame.dispose();
                System.exit(0);
            }
        });

        frame.setSize(300, 250);
        frame.setVisible(true);
    }
}
时间: 2024-11-01 02:03:50

JavaSE Swing程序结构、组件分类及基本规则的相关文章

Swing程序最佳架构设计—以业务对象为中心的MVC模式(转)

前言: 我打算写一系列关于Swing程序开发的文章.这是由于最近我在做一个Swing产品的开发.长期做JavaEE程序,让我有些麻木了.Swing是设计模式的典范,是一件优雅的艺术品,是一件超越时代的产品! 有机会作Swing软件的开发,让我非常有感觉! 呵呵,希望有机会能够用Java3D编写软件,那种感觉一定更棒! Java和Swing都是杰作.我这个人对别人一向很挑剔的,能够得到我由衷地赞誉,可想而知它们有多优秀了.奇怪的是,它们居然一直都无法占领桌面市场.有人说这是技术的原因.我认为这应该

第13章 Swing程序组件 JFrame

JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些Swing组件的容器. 在开发应用程序时可以通过继承java.swing.JFrame类创建一个窗体,在这个窗体中添加组件,同时为组件设置事件.JFrame在程序中的语法格式如下: JFrame jf=new JFrame(title);  // jf: JFrame类的对象 Container container=jf.getContentPane();  //container: Containe

JavaSE总结程序-------书店管理系统

                                                    书店管理系统 通过一段时间的学习,掌握了一些基本的java编程技术和软件开发能力,现在简单的做了一个小型的软件,虽然不能算真正的软件,但是对于初学者来说是一个很好的例子去巩固学习的知识.   项目的联系的目标: 1.Java应用程序基本分析 2.培养面向对象编程的基本思想 3.Java基本设计模式综合应用 4.掌握分层和接口的基本设计 5.构建合理的Java应用程序包结构 6.综合应用JSE所

实验十四 Swing图形界面组件

实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和步骤 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程序1 在elipse IDE中运行教材479页程序12-1,结合运行结果理解程序: 掌握各种布局管理器的用法: 理解GUI界面中事件处理技术的用途. 在布局管理应用代码处添加注释: 测试结果: 这个程序是一个网格布局,网格布局像一

Web结构组件

1.代理 位于客户端和服务器之间的HTTP实体,接收客户端的所有HTTP请求,并将这些请求转发给HTTP服务器. 2.缓存 HTTP的仓库,使常用的页面的副本可以保存在离客户端更近地方 3.网关 连接其他应用程序的特殊Web服务器 4.Agent代理 发起自动HTTP请求的半智能Web服务器 5.隧道 隧道是建立起来之后,对两端之间的连接的原始数据进行盲转发的HTTP应用程序. Web结构组件,布布扣,bubuko.com

Android App程序结构

先看结构图: ====================================== 1.   /src   源码目录,不解释. 2.  /gen   gen目录是ADT 自动生成的代码所在位置,主要包含 R.java 或者AIDL Interface代码.R.java代表了改程序用到的资源. 3.  Android 4.0 jar / Android Private Library /Android Dependencies  Android 的官方jar包,开发App要用到基本jar.

程序结构和分支语句介绍

程序的结构及分类 分支语句介绍 if语句介绍 switch语句介绍 循环语句介绍 程序的结构及分类 程序的结构化是一个设计思想,规定了一套方法,是程序具有合理的结构,以保证和验证程序的正确性.这种方法要求程序设计者布恩那个随心所欲的编写程序,而要按照一定的结构形式来设计和编写程序.他的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率. 结构化程序设计的三种基本结构是:顺序结构.选择结构(分支结构).循环结构. 顺序结构表示程序中的各操作是

Cef应用程序结构

Application Structure 应用程序结构 Every CEF3 application has the same general structure. Provide an entry-point function that initializes CEF and runs either sub-process executable logic or the CEF message loop. Provide an implementation of CefApp to hand

初识C#程序结构

一.编写第一个C#程序.注释: 1.编写程序 static void Main(string[] args)//在Mian方法下编写代码输出数据 { Console.WriteLine("Hello World!");//输出“Hello World!” Console.ReadLine();//打印 } 2.注释 C#程序结构分为注释.命名空间.类.Main方法.标示符及关键字.语句. 注释:行注释都是以“//”开头 段注释引用“/*”开头,以“*/”结尾 二.命名空间: C#程序利