timeoutoptionpane.java

来自「MyDownloader 是一款使用 http 协议(RFC 1867)用于下载」· Java 代码 · 共 87 行

JAVA
87
字号
/*
 * Copyright 2007 JavaAtWork All rights reserved.
 * Use is subject to license terms.
 */
package com.javaatwork.mydownloader.dialog;

import java.awt.Component;

import javax.swing.JDialog;
import javax.swing.JOptionPane;

/**
 * Shows a dialog during a specified number of seconds.
 * 
 * @author Johannes Postma
 */
public class TimeOutOptionPane extends JOptionPane {

	private static final long serialVersionUID = -6406087914305232727L;
	public final static int DOWNLOAD_OPTION = 10000;
	public final static int JAVAATWORK_OPTION = 10001;
	private final static int SHOW_TIME = 8;
	
	/**
	 * Creates a new TimeoutOptionPane.
	 */
    public TimeOutOptionPane() {
        super();
    }

    /**
     * Shows a dialog during a specified number of seconds.
     * 
     * @param parentComponent The parent component.
     * @return DOWNLOAD_OPTION or JAVAATWORK_OPTION
     */
    public static int showTimeoutDialog(Component parentComponent) {
    	
    	Object[] options = {"www.javaatwork.com"};
    	String message = "JavaAtWork\n\nThis is a trial version.\nTo remove this dialog buy the full version.\n\n";
    	
        JOptionPane pane = new JOptionPane(message, JOptionPane.INFORMATION_MESSAGE, -1, null, options);

        final JDialog dialog = pane.createDialog(parentComponent, "Time left: " + TimeOutOptionPane.SHOW_TIME + " seconds");
       
        Runnable r = new Runnable() {
        	
        	public void run() {
        	
        		try {
        			
                    for (int i = TimeOutOptionPane.SHOW_TIME; i >= 0; i--) {
                        
                    	if (i != TimeOutOptionPane.SHOW_TIME) {
                    		Thread.sleep(1000);
                    	}
                    	
                    	if (dialog.isVisible()) {
                            dialog.setTitle("Time left: " + i + " seconds"); 
                        }
                    }
                                       
                    if (dialog.isVisible()) {
                        dialog.setVisible(false);
                    }
                    
                } catch (Throwable t) {
                	// do nothing
                }
        	}
        };
        
        Thread t = new Thread(r);
        t.start();
        
        dialog.setVisible(true);

        if (pane.getValue().equals("www.javaatwork.com")) {
        	return TimeOutOptionPane.JAVAATWORK_OPTION;
        } else {        	
        	return TimeOutOptionPane.DOWNLOAD_OPTION;
        }       
    }
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?