Java JFrame设计及最小化到系统托盘的实现

  Java JFrame可以实现本地实例化窗口,通过向JFrame添加各种控件,实现各种相应的功能。

 

  一、创建窗口实例

  JFrame myFrame = new JFrame();

 

 二、设置JFrame的各种属性

 

  myFrame.setLayout(new BorderLayout()); ---设置窗口中组件的排列方式

  myFrame.setTitle("窗口标题"); --设置窗口的标题

  myFrame.setLocation(x,y); --设置窗口的显示位置

  myFrame.setSize(x,y);设置窗口大小

 

三、实例

 

package monitorServer.control;

import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TextArea;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.ServerSocket;
import java.text.SimpleDateFormat;
import java.util.Date;


import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.Timer;

import monitorServer.control.MServer;
import monitorServer.model.CheckLicense;

public class MServer extends JFrame {

 private static final long serialVersionUID = 1L;
 private static int i = 0;
 static int runTime = 0;
 static TextArea ta = new TextArea();
 static boolean regStatus = false;
 private static TrayIcon trayIcon = null;
 static JFrame mf = new JFrame();
 static SystemTray tray = SystemTray.getSystemTray();

 public static void myFrame() { // 窗体

  mf.setLocation(300, 100);
  mf.setSize(500, 300);
  mf.setTitle("XXXX系统");
  mf.setLayout(new BorderLayout());

  ImageIcon ll = new ImageIcon("C://tyjkdb//leida.gif");//在JFrame中使用图片
  JLabel i = new JLabel(ll);

  JLabel j = new JLabel("XXXX系统v2.02", SwingConstants.CENTER);//设置标签,显示文本居中
  JLabel k = new JLabel("软件开发:李永海   2010.12,All Rights Reserved", SwingConstants.CENTER);//设置标签,显示文本居中
  j.setFont(new java.awt.Font("", 1, 18));//设置标签J显示字体

  Panel p1 = new Panel();实例化面板P1
  p1.setLayout(new BorderLayout());//设置面板P1中控件排列方式

  final Panel p11 = new Panel();
  p11.setLayout(new BorderLayout());设置P11控件排列方式
  p11.add(j, BorderLayout.NORTH);//P11上方显示控件J
  p11.add(k, BorderLayout.SOUTH);//P11下方显示控件K
  
  final JLabel t = new JLabel("",SwingConstants.CENTER);设置标签t用于显示时钟
  t.setFont(new java.awt.Font("", 1, 26));设置标签t字体
  t.setForeground(Color.blue);//设置标签t前景色彩

  p11.add(t,BorderLayout.CENTER);//标签t显示在中间位置
    
  Timer timer_date = new Timer(1000,  new ActionListener(){ 设置数字时钟
      public void actionPerformed(ActionEvent evt) {
       t.setText( new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()));
      
      }
     }
     ); timer_date.start();


  p1.add(i, BorderLayout.WEST);//左侧图标
  p1.add(p11, BorderLayout.CENTER);//p11在P1中间排列

  mf.add(p1, BorderLayout.NORTH);//将p1显示在窗口上方

  mf.add(ta, BorderLayout.CENTER);//将一个多行文本区域显示在文体中间

  mf.setVisible(true);//使窗口可见

  mf.addWindowListener(new WindowAdapter() { // 窗口关闭事件
     public void windowClosing(WindowEvent e) {
      System.exit(0);
     };

     public void windowIconified(WindowEvent e) { // 窗口最小化事件

      mf.setVisible(false);
      MServer.miniTray();

     }

    });

  }

 private static void miniTray() {  //窗口最小化到任务栏托盘

  ImageIcon trayImg = new ImageIcon("c://tyjkdb//leida.gif");//托盘图标

  PopupMenu pop = new PopupMenu();  //增加托盘右击菜单
  MenuItem show = new MenuItem("还原");
  MenuItem exit = new MenuItem("退出");

  show.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent e) { // 按下还原键

    tray.remove(trayIcon);
    mf.setVisible(true);
    mf.setExtendedState(JFrame.NORMAL);
    mf.toFront();
   }

  });

  exit.addActionListener(new ActionListener() { // 按下退出键

     public void actionPerformed(ActionEvent e) {

      tray.remove(trayIcon);
      System.exit(0);

     }

    });

  pop.add(show);
  pop.add(exit);

  trayIcon = new TrayIcon(trayImg.getImage(), "xxxx系统", pop);
  trayIcon.setImageAutoSize(true);

  trayIcon.addMouseListener(new MouseAdapter() {

   public void mouseClicked(MouseEvent e) { // 鼠标器双击事件

    if (e.getClickCount() == 2) {

     tray.remove(trayIcon); // 移去托盘图标
     mf.setVisible(true);
     mf.setExtendedState(JFrame.NORMAL); // 还原窗口
     mf.toFront();
    }

   }

  });

  try {

   tray.add(trayIcon);

  } catch (AWTException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }

 }

  

 public static void main(String[] args) {

    new MServer();
  MServer.myFrame();

 }
}

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值