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

 

转载于:https://www.cnblogs.com/aqing1987/p/4315826.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值