1

我想隐藏 html 页面的内容,直到它完全加载。这个想法是我想让 html 页面的内容做一些处理并重新设置内容。为此,我能够检索文本并对其进行一些处理。但问题是,在时间处理未完成之前,我想隐藏原始 html 页面,而是想显示一些虚拟页面。我想将外壳悬停在浏览器窗口上,并在加载完成后将其删除。我试图隐藏浏览器小部件,但这并没有按预期工作。这是相同的片段。

package browserapp;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.extended.LocationEvent;
import org.eclipse.swt.browser.extended.LocationListener;
import org.eclipse.swt.browser.extended.ProgressEvent;
import org.eclipse.swt.browser.extended.ProgressListener;
import org.eclipse.swt.browser.extended.Browser;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FormAttachment; 
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class MyBrowser_1 {
/**
 * Runs the application
 */
Display display = new Display();
protected boolean done;
public void run() {

    final Shell shell = new Shell(display);
    shell.setText("Simple Browser");
    createContents(shell);
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();

}


/**
 * Creates the main window's contents
 * 
 * @param shell the main window
 */
private void createContents(final Shell shell) {
    shell.setLayout(new FormLayout());

    // Create the composite to hold the buttons and text field
    Composite controls = new Composite(shell, SWT.NONE);
    FormData data = new FormData();
    data.top = new FormAttachment(0, 0);
    data.left = new FormAttachment(0, 0);
    data.right = new FormAttachment(100, 0);
    controls.setLayoutData(data);

    // Create the web browser
    final Browser  browser = new Browser(shell, SWT.NONE);
    browser.addLocationListener(new LocationListener() {

        @Override
        public void changing(LocationEvent event) {
            // TODO Auto-generated method stub
            //browser.setVisible(false);
            Image image = new Image(display,
                       "C:\\Documents and Settings\\My 
                         Documents\\Pictures\\loadingAnimation.gif"); 

            ///shell.setBackgroundImage(image);

        }

        @Override
        public void changed(LocationEvent event) {
            // TODO Auto-generated method stub

        }
    });
    browser.addProgressListener(new ProgressListener() 
    {
        public void completed(ProgressEvent event)
        {
        }
        public void changed(ProgressEvent event) 
        {

            int progressWorked=0;
            if (event.total == 0)
                return;

            done = (event.current == event.total);
            int percentProgress = event.current * 100 / event.total;
            System.out.println("Loading...");

            if (done) 
            {
                progressWorked = 0;
                System.out.println("Loading completed...");
                //browser.setVisible(true);

                //maskPage(browser, maskedMap);

            } else if (progressWorked == 0) 
            {

                progressWorked = percentProgress;
            } else 
            {

                progressWorked = event.current;
            }
        }
    });

    data = new FormData();
    data.top = new FormAttachment(controls);
    data.bottom = new FormAttachment(100, 0);
    data.left = new FormAttachment(0, 0);
    data.right = new FormAttachment(100, 0);
    browser.setLayoutData(data);

    // Create the controls and wire them to the browser
    controls.setLayout(new GridLayout(7, false));

    // Create the back button
    Button button = new Button(controls, SWT.PUSH);
    button.setText("Back");
    button.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            browser.back();
        }
    });

    // Create the forward button
    button = new Button(controls, SWT.PUSH);
    button.setText("Forward");
    button.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            browser.forward();
        }
    });

    // Create the refresh button
    button = new Button(controls, SWT.PUSH);
    button.setText("Refresh");
    button.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            browser.refresh();
        }
    });

    // Create the stop button
    button = new Button(controls, SWT.PUSH);
    button.setText("Stop");
    button.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            browser.stop();
        }
    });

    // Create the address entry field and set focus to it
    final Text url = new Text(controls, SWT.BORDER);
    url.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    url.setText("https://netbanking.hdfcbank.com/netbanking/");
    url.setFocus();

    // Create the go button
    button = new Button(controls, SWT.PUSH);
    button.setText("Go");
    button.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            browser.setUrl(url.getText());
        }
    });

    GridData gridData2 = new GridData(SWT.FILL, SWT.FILL, true, false);
    Label status = new Label(controls, SWT.BORDER);
    status.setLayoutData(gridData2);
    // Allow users to hit enter to go to the typed URL
    shell.setDefaultButton(button);
}




/**
 * The application entry point
 * 
 * @param args the command line arguments
 */
public static void main(String[] args) {
    MyBrowser_1 browser=new MyBrowser_1();
    browser.run();


}

}

4

0 回答 0