• 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);
        }
    }
  • 相关阅读:
    UltraEdit程序设置添加到右键菜单
    UltraEdit加入到右键菜单中
    vim常用命令
    Linux vi命令大全
    vi/vim 计算搜寻关键字数量
    vi 删除全部内容
    vi中全选的命令或者快捷方式
    VI打开和编辑多个文件的命令
    vi/vim 查找替换使用方法
    VMware workstation 与 VMware GSX Server 的区别
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4315826.html
Copyright © 2020-2023  润新知