Java桌面程序多次被打开时显示已运行的程序的窗口
来源:互联网 发布:编程对电脑配置的要求 编辑:程序博客网 时间:2024/05/16 23:41
在“单例”的例子的基础下,自己经过多次的测试和查找API,对Swing的API也不是很熟悉,有些想要的方法没找到,网上也没查找到资料,就简单的实现了这么一个小功能,只是性能的问题暂时不在考虑范围。可根据实际情况优化。
单例控制类:
import java.net.ServerSocket;import java.net.Socket;import javax.swing.JFrame;/** * @author WangW * */public class InstanceControl implements Runnable {private JFrame frame;public InstanceControl(JFrame frame) {this.frame = frame;}/** * 原理:先申请连接,如果不成功,则创建一个服务端,程序就创建了一个示例。 * 下次再运行的时候,又连接,如果连接上了,则证明已经创建了此端口的一个服务, * 证明有实例存在,就退出。同时已创建的服务如果接受到了连接,则可做一些事情。 */public void run() {try {new Socket("127.0.0.1", 12333);// 创建socket,连接12333端口System.exit(0); // 连接成功,说明有实例存在,则退出} catch (Exception e) {}try {ServerSocket server = new ServerSocket(12333);// 创建socket,连接12333端口while (true) {Socket socket = server.accept(); // 接受连接请求if (null != socket) {if (frame.isVisible()) {frame.setExtendedState(JFrame.NORMAL);if (!frame.isFocused()) {frame.setAlwaysOnTop(true);frame.setAlwaysOnTop(false);}} else {frame.setVisible(true);}}}} catch (Exception e) {e.printStackTrace();}}}
测试类:
import javax.swing.JFrame;/** * @author WangW * */public class MainSingle extends JFrame{private static final long serialVersionUID = 7298654510352964995L;public MainSingle() {setTitle("Single");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(200, 100);}public static void main(String[] args) {MainSingle frame = new MainSingle();InstanceControl ic = new InstanceControl(frame);Thread t = new Thread(ic);t.start();frame.setVisible(true);}}
- Java桌面程序多次被打开时显示已运行的程序的窗口
- winform中已运行的程序则显示到桌面
- Swing 程序 多次打开 运行在同一java虚拟机 的实现
- 将程序窗口显示在桌面工作区的右下角
- C#检测同个程序被打开或运行多次
- 防止程序被多次运行的API函数
- Delphi实现程序只运行一次并激活已打开的程序
- Delphi实现程序只运行一次并激活已打开的程序
- [转]防止程序重复运行,显示原来的窗口
- 将 Java 程序作为 Linux 的 Daemon 进程以及防止程序多次运行
- 网页上运行java小程序时出现“应用程序已被安全设置阻止”的解决方法
- 窗口程序的运行过程
- 打开并激活已存在程序窗口
- java 桌面程序运行出问题
- 防止程序多次打开
- 防止程序多次打开
- 《Java程序代理器》- java桌面程序运行的前端启动框架
- c程序多次调用python脚本的正确打开模式
- HDU 1236 ( 排名 )
- RedHat/CentOS发行版本号及内核版本号对照表
- 腹肌锻炼视频(02):八种基本动作
- SCP 远程拷贝
- Android 开发指南以及翻译API等
- Java桌面程序多次被打开时显示已运行的程序的窗口
- 准妈妈化妆同样没问题
- 程序员职业规划
- Misconceptions About iOS Multitasking
- 驱动案例三:platform按键驱动(二、驱动)
- 数据库原理模拟试卷
- C++模板元编程技术
- SQL1117N 由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "EBILL"。
- Android中自定义的加载对话框和加载条