您的位置:首页 > 编程语言 > Java开发

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

2011-01-03 12:38 716 查看
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();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: