package com.hengrensoft.phone.main;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.image.BufferedImage;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import com.hengrensoft.db.ContactGroupBean;
import com.hengrensoft.phone.main.Util.BaseMenuUtil;
import com.hengrensoft.phone.main.Util.ContactGroupUtil;
import com.hengrensoft.phone.main.Util.ContactPersonUtil;
import com.hengrensoft.phone.main.Util.ContactTypeUtil;
import com.hengrensoft.phone.main.Util.SystemUtil;
import com.hengrensoft.phone.util.DateUtil;
import com.hengrensoft.phone.util.HrUtil;
import com.hengrensoft.phone.util.StrUtil;
public class DesktopFrame extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
private final int FRAME_WIDTH = 800; // 窗口的宽度
private final int FRAME_HEIGHT = 600; // 窗口的高度
private final int PANEL_LOGIN_INFO_HEIGHT = 30; // 登录者信息栏的高度
private final int LOGIN_INFO_HELLO_WIDTH = 130; // 登录者信息欢迎的宽度
private final int LOGIN_INFO_TIME_WIDTH = 240; // 登录者信息当前时间的宽度
private final int LOGIN_INFO_EXIT_WIDTH = 100; // 登录者信息退出的宽度
private final int LOGIN_INFO_EXIT_MARGIN_RIGHT = 20; // 登录者信息退出的右边距
private final int LOGIN_INFO_COMPONENT_SPACING = 10; // 登录者信息各控件的距离
private final int PANEL_MAIN_MENU_HEIGHT = 70; // 主菜单栏的高度
private final int MAIN_MENU_MARGIN_RIGHT = 50; // 主菜单的右边距
private final String NAME_EXIT_LABEL = "exitLabel"; // 退出文本的名字
private final String NAME_MAIN_MENU_PRIFIX = "mainMenu_"; // 主菜单文本的名字
private final Color PANEL_LOGIN_INFO_BG = new Color(24, 24, 24); // 登录者信息栏的背景颜色
private final Color PANEL_LOGIN_INFO_FG = new Color(255, 255, 255); // 登录者信息的前景颜色
private final Color MENU_ACTIVE_FG = new Color(47, 185, 255); // 登录者信息的激活前景颜色
private final Color PANEL_MAIN_MENU_BG = new Color(49, 49, 49); // 主菜单栏的背景颜色
private final Color PANEL_MAIN_MENU_FG = new Color(255, 255, 255); // 主菜单栏的前景颜色
private final Color PANEL_SUB_MENU_BG = new Color(220, 220, 220); // 子菜单栏的背景颜色
private final Font LOGIN_INFO_FONT = new Font(SysStatic.PRIMARY_FONT_FAMILY, Font.PLAIN, 15); // 登录信息的字体
private final Font MAIN_MENU_FONT = new Font(SysStatic.PRIMARY_FONT_FAMILY, Font.PLAIN, 20); // 主菜单的字体
private int workWidth = 0; // 工作区的宽度
private int workHeight = 0; // 工作区高度
private Container container; // 窗口容器
private WindowListener windowL; // 窗口监听
private JPanel loginInfoPanel = new JPanel(); // 登录者信息容器
private JPanel mainMenuPanel = new JPanel(); // 主菜单容器
private JPanel subMenuPanel = new JPanel(); // 子菜单容器
private JPanel mainListPanel = new JPanel(); // 主列表容器
private JLabel currTimeLabel = new JLabel(); // 当前时间文本标签
private JLabel currMainMenuLabel = new JLabel(); // 当前主菜单文本标签(只显示图标)
private Map<Integer, JLabel> mainMenuMap = new ConcurrentHashMap<>(); // 主菜单文本标签的Map
private int[] menuWidthArr; // 菜单宽度数组
private int currMainMenuIconSize = 0; // 当前主菜单文本标签图标的大小
private int[] currMainMenuIconXArr; // 当前主菜单文本标签图标的开始X
private int currMainMenuIconY = 0; // 当前主菜单文本标签图标的开始Y
private int currMainMenuVal = MenuInfo.MainMenu.CONTACT_PERSON.getVal(); // 当前主菜单的值
private Component thisFrame; // 当前的窗口
private Thread loopThread; // 轮询线程
private MouseListener mouseL; // 鼠标监听
private BaseMenuUtil cpUtil = new ContactPersonUtil(); // 联系人的小工具
private BaseMenuUtil cgUtil = new ContactGroupUtil(); // 号码分组的小工具
private BaseMenuUtil ctUtil = new ContactTypeUtil(); // 号码类型的小工具
private BaseMenuUtil sysUtil = new SystemUtil(); // 系统管理的小工具
public DesktopFrame()
{
try
{
thisFrame = this;
this.setTitle(SysStatic.SOFT_NAME);
this.setIconImage(SysStatic.LOGO_IMG);
this.setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH);
//暂时不用这个 this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(FRAME_WIDTH, FRAME_HEIGHT);
HrUtil.setLocaCenter(this, FRAME_WIDTH, FRAME_HEIGHT); // 设置窗口在屏幕中的位置(居中)
this.setVisible(true);
this.setVisible(true);
workWidth = this.getWidth() - SysStatic.FRAME_HORIZON_HOLD;
workHeight = this.getHeight() - SysStatic.FRAME_VERTICAL_HOLD;
this.setVisible(false);
container = getContentPane();
container.setLayout(null);
// 初始化小工具
initUtil();
// 添加窗口事件监听
windowL = new WindowListener()
{
@Override
public void windowOpened(WindowEvent e)
{
}
@Override
public void windowIconified(WindowEvent e)
{
}
@Override
public void windowDeiconified(WindowEvent e)
{
}
@Override
public void windowDeactivated(WindowEvent e)
{
}
@Override
public void windowClosing(WindowEvent e)
{
try
{
if (e.getWindow() == DesktopFrame.this)
{
/* 暂时不用这个
int result = JOptionPane.showConfirmDialog(
DesktopFrame.this, "请确定是否退出系统? ", "提示", JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION)
{
System.exit(0); // 退出虚拟机
}
*/
}
}
catch(Exception ex)
{
System.out.println(ex);
}
}
@Override
public void windowClosed(WindowEvent e)
{
}
@Override
public void windowActivated(WindowEvent e)
{
}
};
this.addWindowListener(windowL);
mouseL = new MouseListener()
{
@Override
public void mouseReleased(MouseEvent e)
{
onMouseReleased(e);
}
@Override
public void mousePressed(MouseEvent e)
{
}
@Override
public void mouseExited(MouseEvent e)
{
onMouseExited(e);
}
@Override
public void mouseEntered(MouseEvent e)
{
onMouseEntered(e);
}
@Override
public void mouseClicked(MouseEvent e)
{
}
};
loopThread = new Thread(new Runnable()
{
@Override
public void run()
{
loopRun();
}
});
loopThread.start();
// 添加登录者信息栏内容
loginInfoPanel.setLayout(null);
loginInfoPanel.setBounds(0, 0, workWidth, PANEL_LOGIN_INFO_HEIGHT);
loginInfoPanel.setBackground(PANEL_LOGIN_INFO_BG);
// 显示欢迎信息
JLabel helloLabel = new JLabel();
String loginCall = HrUtil.getLoginCall("");
helloLabel.setText("你好," + loginCall);
int beginX = workWidth - LOGIN_INFO_HELLO_WIDTH - LOGIN_INFO_TIME_WIDTH
- LOGIN_INFO_EXIT_WIDTH - LOGIN_INFO_EXIT_MARGIN_RIGHT - LOGIN_INFO_COMPONENT_SPACING * 2;
helloLabel.setBounds(beginX, 0, LOGIN_INFO_HELLO_WIDTH, PANEL_LOGIN_INFO_HEIGHT);
helloLabel.setForeground(PANEL_LOGIN_INFO_FG);
helloLabel.setFont(LOGIN_INFO_FONT);
loginInfoPanel.add(helloLabel);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
3.0 实现sqlite数据库的创建和增删查改.rar (92个子文件)
hrPhone
.project 383B
db
hrPhone.db 28KB
src
com
hengrensoft
phone
InitAdminPwdFrame.java 2KB
util
Values.java 961B
StrUtil.java 535B
HrUtil.java 3KB
DateUtil.java 1KB
main
SysStatic.java 1KB
MenuInfo.java 3KB
ProcIconUtil.java 1KB
edit
ContactGroupEditDialog.java 7KB
BaseEditDialog.java 3KB
MainClass.java 142B
SysInitFrame.java 5KB
MainUtil.java 3KB
DesktopFrame.java 16KB
Util
SystemUtil.java 2KB
ContactGroupUtil.java 8KB
BaseMenuUtil.java 2KB
MainListUtil.java 9KB
ContactPersonUtil.java 3KB
ContactTypeUtil.java 3KB
StartupFrame.java 2KB
LoginFrame.java 13KB
view
TfBorder.java 2KB
db
DbUtil.java 9KB
FrameVerBean.java 2KB
InsertParam.java 394B
BaseBean.java 3KB
ContactGroupBean.java 594B
FieldInfo.java 1KB
ContactTypeBean.java 593B
ContactPersonBean.java 1KB
SysUserBean.java 2KB
lib
sqlite-jdbc-3.27.2.1.jar 5.73MB
res
img
main
logo.png 10KB
.settings
org.eclipse.jdt.core.prefs 598B
.classpath 368B
bin
com
hengrensoft
phone
InitAdminPwdFrame$1.class 1KB
util
Values$Status.class 2KB
HrUtil.class 4KB
DateUtil.class 2KB
StrUtil.class 1KB
Values.class 446B
Values$Option.class 2KB
InitAdminPwdFrame.class 2KB
main
DesktopFrame.class 12KB
MenuInfo$SubMenuSystem.class 2KB
MenuInfo$MainMenu.class 2KB
LoginFrame.class 10KB
SysInitFrame$1.class 2KB
DesktopFrame$5.class 777B
MainUtil$2.class 3KB
ProcIconUtil$1.class 2KB
edit
ContactGroupEditDialog$1.class 1KB
ContactGroupEditDialog.class 8KB
BaseEditDialog.class 3KB
LoginFrame$1.class 2KB
MainUtil$1.class 2KB
MenuInfo$SubMenuContactGroup.class 2KB
MenuInfo$SubMenuContactPerson.class 2KB
SysInitFrame.class 5KB
DesktopFrame$1.class 2KB
MenuInfo$SubMenuContactType.class 2KB
Util
MainListUtil.class 10KB
SystemUtil.class 3KB
ContactGroupUtil$1.class 2KB
ContactPersonUtil.class 3KB
MainListUtil$1.class 2KB
ContactTypeUtil.class 3KB
ContactGroupUtil.class 9KB
BaseMenuUtil.class 3KB
SysStatic.class 1KB
DesktopFrame$4.class 2KB
MainClass.class 484B
DesktopFrame$3.class 667B
LoginFrame$2.class 3KB
DesktopFrame$2.class 1KB
StartupFrame.class 3KB
ProcIconUtil.class 1KB
MainUtil.class 1KB
MenuInfo.class 747B
view
TfBorder.class 3KB
db
FrameVerBean.class 3KB
DbUtil.class 11KB
ContactPersonBean.class 2KB
SysUserBean.class 3KB
BaseBean.class 3KB
InsertParam.class 997B
ContactTypeBean.class 1KB
FieldInfo.class 2KB
ContactGroupBean.class 1KB
共 92 条
- 1
资源评论
fei得更高
- 粉丝: 7
- 资源: 69
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功