用Java实现的Status Bar - TestStatusbar.java

来源:互联网 发布:ic数据手册 编辑:程序博客网 时间:2024/05/21 17:32

/*===============================================================================

 * 说明:

 * 这是StatusbarBuilder的一个测试。StatusbarBuilder是我新做的一个类,也可以说是

 * 我学java以来第一个比较满意的作品,虽然确实还存在一些问题。但时间不允许,所以暂告

 * 一段落。希望这个小东东能给你开发带来帮助。

 *===============================================================================

 * auto:    Jason

 * csdn:    Unagain

 * email:    tl21cen@hotmail

 * date: 2006-4-13

 *

 * from http://blog.csdn.net/unagain/archive/2006/04/13/661579.aspx

 */

package tl.util.test;

 

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ComponentEvent;

import java.awt.event.ComponentListener;

 

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.border.BevelBorder;

 

import tl.util.StatusbarBuilder;

 

public class TestStatusbar {

    public static void main(String[] args) {

        StatusbarBuilder bar1, bar2;

      

        BevelBorder border =

           new BevelBorder(BevelBorder.LOWERED);

      

        JFrame fr1 = new JFrame();

        JFrame fr2 = new JFrame();

      

        fr1.setDefaultCloseOperation(

               JFrame.EXIT_ON_CLOSE);

       bar1 = StatusbarBuilder.getInstance(fr1);

        bar1.add(new JLabel("Main Window"), 100);

        bar1.add(new JTextField("JTextField"), 100);

      

        JButton btn = new JButton("JButton" );

        bar1.add(btn);

        bar1.notice("create bar using default setting.");

      

       final StatusbarBuilder bar = bar1;

       final JFrame fr = fr2;

        btn.addActionListener(

           new ActionListener(){

               public void actionPerformed(ActionEvent e){

                   fr.dispose();

                  if (fr == null) {

                      bar.notice("fr2 disposed.");

                      return;

                  }

                   bar.notice("show fr2.");

                   fr.setVisible(true);

                 

               }

           });

      

        JTextArea t1 = new JTextArea();

        t1.setBorder(border);

        fr1.add(t1,BorderLayout.CENTER);

      

        JTextArea t2 = new JTextArea();

        t2.setBorder(border);

        fr2.add(t2,BorderLayout.CENTER);

 

        fr2.setDefaultCloseOperation(

               JFrame.DISPOSE_ON_CLOSE);

      

       final JTextField notice = new JTextField();

        notice.addComponentListener(

           new ComponentListener(){

               public void componentResized(ComponentEvent e) {

                   notice.setText(e.paramString());

               }

               public void componentMoved(ComponentEvent e) {

                   notice.setText(e.paramString());

               }

               public void componentShown(ComponentEvent e) {

                   notice.setText(e.paramString());

               }

               public void componentHidden(ComponentEvent e) {

                   notice.setText(e.paramString());

               }

           });

        StatusbarBuilder.setNotice(notice);

        StatusbarBuilder.setBackground(Color.LIGHT_GRAY);

        StatusbarBuilder.setBarStyle(StatusbarBuilder.PLAIN);

        StatusbarBuilder.setGap(5);

        StatusbarBuilder.setHeight(30);

      

       bar2 = StatusbarBuilder.getInstance(fr2);

        bar2.add(new JLabel("Sub Window."));

        bar2.add(new JLabel("Hello"), 60);

 

      

        fr1.setPreferredSize(new Dimension(400, 300));

        fr2.setPreferredSize(new Dimension(300, 200));

 

        fr1.pack();

        fr2.pack();

        fr1.setVisible(true);

        fr2.setVisible(true);

    }

}

/*

// 另附

// 按默认设置,为一个已创建的JFrame对象fr创建一个状态条。
StatusbarBuilder statusBar = StatusbarBuilder.getInstance(fr);
 
// 在状态条中添加显示格
JLabel l = new JLabel("Hello")
statusBar.add(l, 40);
 
并不仅限于JLabel,只要属JComponent的子类就行。
以后,比如:l.setText("Good Morning"),会在状态条上显示。
 
程序中的信息可以在状态条的提示部分显示,比如:
statusBar.notice("准备完毕");
 
再比如,当按钮移动到一个菜单,或按钮时
statusBar.notice("该部件的功能……");

*/