zoukankan      html  css  js  c++  java
  • JAVA SWING(1)

    MVC(Model-View-Control)体系结构

      Swing胜过AWT的主要优势在于MVC体系结构的普遍使用。在一个MVC用户界面中,存三个通讯对象:模型、视图和控件。模型是指定的逻辑表示法,视图是模型的可视化表示法,而控件则指定了如何处理用户输入。当模型发生改变时,它会通知所有依赖它的视图,视图使用控件指定其相应机制。

      为了简化组件的设计工作,在Swing组件中视图和控件两部分合为一体。每个组件有一个相关的分离模型和它使用的界面(包括视图和控件)。比如,按钮JButton有一个存储其状态的分离模型ButtonModel对象。组件的模型是自动设置的,例如一般都使用JButton 而不是使用ButtonModel 对象。另外,通过Model类的子类或通过实现适当的接口,可以为组件建立自己的模型。把数据模型与组件联系起来用setModel( )方法。

      MVC是现有的编程语言中制作图形用户界面的一种通用的思想,其思路是把数据的内容本身和显示方式分离开,这样就使得数据的显示更加灵活多样。比如,某年级各个班级的学生人数是数据,则显示方式是多种多样的,可以采用柱状图显示,也可以采用饼图显示,也可以采用直接的数据输出。因此在设计的时候,就考虑把数据和显示方式分开,对于实现多种多样的显示是非常有帮助的。

    7.1.5 可存取性支持

      所有Swing组件都实现了ACCESSible接口,提供对可存取性的支持,使得辅助功能如屏幕阅读器能够十分方便的从Swing组件中得到信息。

    7.1.6 支持键盘操作

      在Swing组件中,使用JComponent类的registerKeyboardAction()方法,
    能使用户通过键盘操作来替代鼠标驱动GUI上Swing组件的相应动作。有些类还为键盘操作
    提供了更便利的方法。

      其实这就相当于热键,使得用户可以只用键盘进行操作。

    7.1.7 设置边框

      对Swing组件可以设置一个和多个边框。Swing中提供了各式各样的边框供用户选用,
    也能建立组合边框或自己设计边框。一种空白边框可以增大组件,协助布局管理器对
    容器中的组件进行合理的布局。

    7.1.8 使用图标(Icon)

      与AWT的部件不同,许多Swing组件如按钮、标签,除了使用文字外,还可以使用
    图标修饰自己。

    例7.1:
      import Javax.swing.*; //引入Swing包名
                 //import com.sun.Java.swing.*;
                 //使用JDK 1.2 Beta 4版和所有Swing 1.1 Beta 3
                 //之前的
    版本,引入Swing包名用此方法。
      import Java.awt.*;
      import Java.awt.event.*;
      public class SwingApplication {
        private static String labelPrefix = "Number of button clicks: ";
        private int numClicks = 0; //计数器,计算点击次数
        public Component createComponents() {
          final JLabel label = new JLabel(labelPrefix + "0 ");

          JButton button = new JButton("I'm a Swing button!");
        button.setMnemonic(KeyEvent.VK_I); //设置按钮的热键为'I'
        button.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            numClicks++;
            label.setText(labelPrefix + numClicks);
                     //显示按钮被点击的次数

          }
        });
        label.setLabelFor(button);

        /* 在顶层容器及其内容之间放置空间的常用办法是把内容添加到Jpanel上,
    而Jpanel本身没有边框的。*/


        JPanel pane = new JPanel();
        pane.setBorder(BorderFactory.createEmptyBorder(
                  30, //top
                  30, //left
                  10, //bottom
                  30) //right
                  );
         pane.setLayout(new GridLayout(0, 1)); //单列多行
         pane.add(button);
         pane.add(label);
         return pane;
      }

      public static void main(String[] args) {
         try {
           UIManager.setLookAndFeel(
             UIManager.getCrossPlatformLookAndFeelClassName());
                              //设置窗口风格

         } catch (Exception e) { }

         //创建顶层容器并添加内容.
         JFrame frame = new JFrame("SwingApplication");
         SwingApplication app = new SwingApplication();
         Component contents = app.createComponents();
         frame.getContentPane().add(contents, BorderLayout.CENTER);

         //窗口设置结束,开始显示
         frame.addWindowListener(new WindowAdapter() {
                          //匿名类用于注册监听器

           public void windowClosing(WindowEvent e) {
             System.exit(0);
           }
         });
         frame.pack();
         frame.setVisible(true);
       }
      }

       查看运行结果

    7.1.9 Swing程序结构简介

      Swing的程序设计一般可按照下列流程进行:
      1. 引入Swing包
      2. 选择"外观和感觉"
      3. 设置顶层容器
      4. 设置按钮和标签
      5. 向容器中添加组件
      6. 在组件周围添加边界
      7. 进行事件处理

  • 相关阅读:
    public,protected,private辨析
    转载---Java集合对象的深度复制与普通复制
    SSM框架学习之高并发秒杀业务--笔记4-- web层
    PCB布线总的原则
    模拟电子技术目录
    放大器(PA+LAN)在射频上的应用
    AD软件Bug和自我失误的对战
    二、cadence焊盘与封装制作操作步骤详细说明
    图腾柱电路工作原理
    转载:介绍AD另外一种奇葩的多通道复用的方法
  • 原文地址:https://www.cnblogs.com/seerlin/p/995584.html
Copyright © 2011-2022 走看看