Java Swing

原创 2007年09月19日 15:00:00
 
Swing是什么
       Swing属于JFC(Java Foundation Classes)的一部分。JFC包含了AWT,Swing,辅助功能API,Java2D,拖放。Swing的出现是为了解决AWT(Abastract Window Toolkit)的移植性和提供更多的企业级应用程序所需要的功能。Swing建立在核心AWT库上,JDK1.2以及更高的版本已经包含了Swing库。
       Swing内部采用了MVC体系结构(modle-view-controller)。modle负责存放Swing组件的状态(数据),controller负责处理事件,view负责绘制图形。Swing使用了简化的MVC变体,controller和view合并称为UI代理。这种设计使得一个modle可以对应多个UI代理,因此非常灵活。
第一个简单的Swing组件
       我的这个Swing组件非常简单,只是一个toolbar。参考下面的实现代码:
package test1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
 *
 * @author root
 */
public class ToolbarFrame extends Frame{
   
    /** Creates a new instance of ToolbarFrame */
    public ToolbarFrame() {
        super("My Toolbar(Swing)");//通过调用基类Frame的构造函数初始化标题栏文字
        setSize(450,250);
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
    }
}
       注意红色代码是创建了一个内部类,该类是WindowAdapter的子类,并且重写了虚函数windowClosing。然后将该类的引用交由TollbarFrame管理,通过方法addWindowListener。
如果没有这步,我们的toolbar可以显示,但是用不会被关闭。
       现在创建调用代码:
 
 
package test1;
 
/**
 *
 * @author root
 */
public class Main {
   
    /** Creates a new instance of Main */
    public Main() {
    }
   
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ToolbarFrame toolbar=new ToolbarFrame();
        toolbar.setVisible(true);
    }
   
}
 
       调用代码只有两行,非常简单。现在我们来看看运行的效果,见下图:

       由于没有设置窗口的起始位置,所以默认停留在屏幕左上方。
 
既然我们使用Net Beans来开发程序,Net Beans向导也可以为我做同样的事情。通过使用new JFrame Form来创建一个ToolbarFrame2类。我们获得下面的代码:
 
 
package test1;
 
/**
 *
 * @author root
 */
public class ToolbarFrame2 extends javax.swing.JFrame {
   
    /** Creates new form ToolbarFrame2 */
    public ToolbarFrame2() {
        initComponents();
    }
   
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                         
    private void initComponents() {
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );
        pack();
    }// </editor-fold>                        
   
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ToolbarFrame2().setVisible(true);
            }
        });
    }
   

 
       我们获得了没有标题的ToolbarFrame2,并且已经可以响应关闭按钮。
注意,我们的ToolbarFrame2类从JFrame派生,而不是Frame。Frame是AWT的类,而JFrame是Swing提供的类。我们应该尽量使用Swing类。
       private void initComponents() 方法的实现涉及到 GroupLayout类等细节,后面会逐渐介绍。关于JFrame类的文档请参考下面的链接:http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html
       setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE)中,使用了类WindowConstants的公有静态整形常量,这些常量分别代表窗口关闭时的行为,具体可以参考
http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html#windowevents。
       我们可以通过调用JFrame的成员函数setTitle来设置标题。
 
 
 
添加控件
       在Net Beans IDE中,我们可以使用编辑器进行可视化编辑(通过Design视图),比如添加一个JButton。向导将为我们定义如下变量:
 
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    // End of variables declaration
       并且在private void initComponents() 方法中增加下面一行:
        jButton1 = new javax.swing.JButton();
 
事件处理
       所有的Swing类以及派生类都拥有方法public void addActionListener(ActionListener l)
该方法可以添加事件的监听者,当有事件发生,Swing组件就会调用这些监听者的public void actionPerformed(java.awt.event.ActionEvent evt)方法。形成事件回调。我们可以利用Net Beans为我们创建这些注册的代码。右键点击JButton,然后选择events->action->actionPerformed,Net Beans将创建私有方法actionPerformed,然后在initComponents方法中增加下面的代码:
jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
       我们只需要将 我们的处理逻辑写到jButton1ActionPerformed私有方法中就可以响应事件了。
       如果我们有两个JButton控件,Net Beans将为我们创建两个私有方法,并且创建两个继承自ActionListener的内部类,确保不会互相干扰。请看下面的实例代码:
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jButton1.setText("Button1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
 
        jButton2.setText("Button2");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
 
       ActionEvent对象能够提供很多的信息,请参考文档:http://java.sun.com/javase/6/docs/api/java/awt/event/ActionEvent.html
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java Swing中弹出对话框的几种方式

Swing中提供了JOptionPane类来实现类似Windows平台下的MessageBox的功能,同样在Java中也有,利用 JOptionPane类中的各个static方法来生成各种标准的对话框...

Java Swing图形用户界面设计

  • 2015年06月08日 16:26
  • 4.38MB
  • 下载

java swing 时间控件

  • 2016年10月21日 10:44
  • 28KB
  • 下载

java实验之swing图形用户界面程序设计及总结

8.1组件和容器 顶层容器有小应用程序(Applet和JApplet)、对话框(Dialog和JDialog)、框架(Frame和JFrame)。这些容器都存在于java.swing*;中. ...

java-Swing快速上手

  • 2014年12月08日 16:40
  • 519KB
  • 下载

基于Java swing的聊天器

  • 2017年10月03日 13:07
  • 532KB
  • 下载

Swing原创Java版QQ26638719:漂亮,时尚,功能丰富,个性张扬,稳定,可移植,含源码和完整配置

郑重声明:需要程序请到 http://v587.jsp.jspee.com.cn/portal/ 去下载。而且可以联系到作者 (可先到华为网盘去看《java至尊QQ演示视频》) 安装程序下载链接:...

捕鱼达人纯java swing

  • 2017年09月21日 18:35
  • 12.86MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Swing
举报原因:
原因补充:

(最多只允许输入30个字)