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);

    }

}

 

你可能感兴趣的:(JavaSE)