2012-06-01 22 views
8

Tarayıcı penceresini bir Java uygulaması uyarı penceresinden ön plana/odağa çekmenin bir yolu var mı? İçinde bir düğme ile bir uyarı getiren bir html sayfasında bir applet var. Düğmeye basıldığında, orjinal tarayıcı penceresinin nerede olursanız olun (minimize, örtülü, vb.) Olmasını istiyorum. Bunu yapmak için Java'yı Javascript'e bağlamanın bir yolu olduğuna inanıyorum ama Javascript'i bilmiyorum. İşte Java/Javascript uygulaması içeren tarayıcı penceresini ön plana getirme

Java uygulaması kodudur:

/** An applet that posts an alert and waits for the alert button to be pressed. 
* Version 1 uses http://java.sun.com/products/plugin/1.3/docs/jsobject.html 
*/ 

import netscape.javascript.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Bounce extends JApplet implements ActionListener { 
    JDialog dialog; 
    JSObject window; 
    String message; 

    public void paint(Graphics g) { 
     g.clearRect(0,0, 400,40); 
     g.drawString(message,40,20); 
    } 

    public void init() { 
     JFrame frame= null; 
     dialog= new JDialog(frame, "Bounce App"); 

     JButton setupButton= new JButton("Bounce it back!"); 
     setupButton.addActionListener(this); 

     JPanel contentPane= new JPanel(); 
     contentPane.add(setupButton); 
     contentPane.setOpaque(true); 
     dialog.setContentPane(contentPane); 

     dialog.setSize(new Dimension(400, 110)); 
     dialog.setVisible(true); 

     message= "This applet posts an alert panel."; 
     window= JSObject.getWindow(this); 
//  String[] params= { "An alert message" }; 
//  window.call("alert", params); 
//  window.eval("alert('Important Alert!')"); 
    } 

    public void actionPerformed(ActionEvent e) { 
     dialog.setVisible(false); 
     dialog.dispose(); 
     System.err.println("button has been pushed; focus set"); 
     message= "Somebody pushed my bounce-back button."; 
     JSObject document= (JSObject)window.getMember("document"); 
     document.setMember("bgColor", "orange"); 
     window.eval("focus()"); 
     repaint(); 
    } 

} 

Ve burada HTML kodu aşağıdadır:

<HTML> 
    <HEAD><TITLE>The Reappearing Page</TITLE></HEAD> 
    <body bgcolor="#f0ffc0"> 

    <H2>Make this page reappear</H2> 
    This page will start an applet (white box below) that sets up an alert. 
    Before you respond to the alert, hide the window you are reading right now, 
    using one of these methods:<ul> 
    <li> cover it with another window, </li> 
    <li> Hide it using a menu item, </li> 
    <li> Minimize it, or </li> 
    <li> move it to another workspace or desktop. </li> 
    </ul> 
    Then click on the button in the alert. 

    <P> 
    <EMBED type="application/x-java-applet;version=1.3" width="400" height="40" 
     align="baseline" code="Bounce.class" MAYSCRIPT=true 
     pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"> 
    <NOEMBED> 
     No JDK 1.3 support for APPLET!! 
    </NOEMBED> 
    </EMBED> 

    <P>What is supposed to happen is that the main window 
    will emerge from wherever you hid it and reappear. 
    Since I don't know how to do this, it is your challenge to actually make it happen. 
    We need to be able to achieve this magic from any of the situations listed above.</P> 

    </body> 

cevap

1

(comment değiştirilmiştir Ben iyi bir kod parçacığını gönderebilir böylece cevap Sizin için bir ön sayfadan, bir ana sayfadan yarattığınız bir pencere olmadıkça ("Tebrikler !!" stomer, bir ödül kazandınız !!!!! "). Başka bir pencereden window.open kullanarak bir pop-up olarak uygulama penceresini yüklü ettiyseniz, windowFocus kullanarak deneyebilirsiniz:

var w = window.open(appletPageUrl); 
w.focus() 

Ben YMMV yüzden, pop-up blokerler bu tür bir şey takdir etmiyor düşünün. Kişisel bir notta, bir kullanıcının uygulamanızı gizlemeyi/küçültmeyi seçtiğinde uyarınızın hakkında bilgi almak isteyip istemediğini düşünmenizi öneririm.

İlgili konular