这是个很简单浏览器,当我在输入框输入个网址后,按下“进入”,却没有什么反应。请教下问题出在哪里?
谢谢了。
问题2,在SWT中,shell,browser 这些赋值弄的很头大,请教下这个问题
问题3,当我从浏览器中,点击链接,弹出了第二个页面。可当我关闭第一个页面时,第二个也会关闭,请教下,该怎么解决?谢谢了!!!祝大家都情人节快乐import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.TitleListener;
import org.eclipse.swt.browser.TitleEvent;
import org.eclipse.swt.browser.VisibilityWindowListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.FormAttachment;
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.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;public class Browser1 
{
public Display display;
public Shell shell;

public Composite com;
public Button forwardButton;
public Button backButton;
public Button stopButton;
public Button refreshButton;

public Text locationText;
public Button goButton;


public Label statusText;
public ProgressBar progressBar;
public Browser browser;

public void createMenuBar(Shell shell)
{

}
public void createToolBar(Shell shell)
{
   ToolBar toolBar=new ToolBar(shell,SWT.None);
   ToolItem forwardItem=new ToolItem(toolBar,SWT.None);
   forwardItem.setText("前进");
   ToolItem backItem=new ToolItem(toolBar,SWT.None);
   backItem.setText("后退");
   ToolItem stopItem=new ToolItem(toolBar,SWT.None);
   stopItem.setText("停止");
   ToolItem refreshItem=new ToolItem(toolBar,SWT.None);
   refreshItem.setText("刷新");
  
   toolBar.pack();
}

public Composite createAddressBar(Shell shell)
{
   System.out.println("1221"+shell.getText());
Composite com =new Composite(shell,SWT.BORDER);

Label inputLabel=new Label(com,SWT.NONE);
inputLabel.setText("输入网址:");
inputLabel.setBounds(5, 10, 60, 30);

final Text locationText=new Text(com,SWT.BORDER);
locationText.setBounds(70, 10, 300, 30);

goButton = new Button(com, SWT.PUSH);
goButton.setText("进入");
goButton.setBounds(500, 10, 50, 30);
goButton.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event)
      {

      
    browser.setUrl(locationText.getText());
  
  
  
      }
    });
return com;
}
public Shell createShell(final Display display)
{

    Shell   shell=new Shell(display);
    shell.setLayout(new FormLayout());
    createMenuBar(shell);
    createToolBar(shell);
    Composite com =this.createAddressBar(shell);
    com.setBounds(5, 10, 100, 20);
    FormData data = new FormData();
    data.top= new  FormAttachment(shell,20); 
    data.left = new FormAttachment(0, 5); 
 
    data.right = new FormAttachment(100, -5);
    com.setLayoutData(data);
    return shell;
}
public void createBrowser(final Display display,Browser browser )
{
      
      Shell shell=this.createShell(display);
  FormData formData=new FormData();   
      
          formData.top= new  FormAttachment(com,50); 
          formData.left = new FormAttachment(0, 5); 
          formData.bottom = new FormAttachment(100, -5); 
          formData.right = new FormAttachment(100, -5);
          browser.setLayoutData(formData);   
          browser.addTitleListener(new org.eclipse.swt.browser.TitleListener() {   
              public void changed(org.eclipse.swt.browser.TitleEvent event) {  
               Browser browser = (Browser)event.widget;
             Shell  shell = browser.getShell();
               shell.setText(event.title);   
              }   
          });   
          browser.addOpenWindowListener(new org.eclipse.swt.browser.OpenWindowListener() {
              public void open(org.eclipse.swt.browser.WindowEvent event) {
                  
            
                   Shell shell=createShell(display);
                      Browser browser = new Browser(shell, SWT.NONE);
                     
                      createBrowser(display,browser);
                      event.browser = browser;
                    
              }
          });
        
         
          browser.addVisibilityWindowListener(new org.eclipse.swt.browser.VisibilityWindowListener() {
              public void hide(org.eclipse.swt.browser.WindowEvent event) {
                      Browser browser = (Browser)event.widget;
                      org.eclipse.swt.widgets.Shell shell = browser.getShell();
                      shell.setVisible(false);
              }
              public void show(org.eclipse.swt.browser.WindowEvent event) {
                      Browser browser = (Browser)event.widget;
                      org.eclipse.swt.widgets.Shell shell = browser.getShell();
                      if (event.location != null) shell.setLocation(event.location);
                      if (event.size != null) {
                              Point size = event.size;
                              shell.setSize(shell.computeSize(size.x, size.y));
                      }
                      if (event.addressBar || event.menuBar || event.statusBar || event.toolBar) {
                              // Create widgets for the address bar, menu bar, status bar and/or tool bar
                              // leave enough space in the Shell to accommodate a Browser of the size
                              // given by event.size
                      }
                    
                      shell.open();
              }
      });
         
          //为浏览器注册地址改变事件   
          /*
          browser.addLocationListener(new org.eclipse.swt.browser.LocationListener() {   
              public void changing(org.eclipse.swt.browser.LocationEvent e) {   
                  locationText.setText(e.location);   
              }   
    
              public void changed(org.eclipse.swt.browser.LocationEvent e) {   
              }   
          });   
          //为浏览器注册装载网页事件   
          browser.addProgressListener(new org.eclipse.swt.browser.ProgressListener() {   
              //当装载时,设置装载的进度,并且设置停止按钮可用   
              public void changed(org.eclipse.swt.browser.ProgressEvent e) {   
                  if (!stopButton.isEnabled() && e.total != e.current) {   
                      stopButton.setEnabled(true);   
                  }   
                  progressBar.setMaximum(e.total);   
                  progressBar.setSelection(e.current);   
              }   
              //装载完成后设置停止按钮,后退按钮,前进按钮和进度条的状态   
              public void completed(org.eclipse.swt.browser.ProgressEvent e) {   
                //  stopButton.setEnabled(false);   
               //   backButton.setEnabled(browser.isBackEnabled());   
               //   forwardButton.setEnabled(browser.isForwardEnabled());   
                  progressBar.setSelection(0);   
              }   
          });   
          //注册浏览器状态改变事件   
          browser.addStatusTextListener(new org.eclipse.swt.browser.StatusTextListener() {   
              public void changed(org.eclipse.swt.browser.StatusTextEvent e) {   
                  statusText.setText(e.text);   
              }   
          });   
          //初始状态打开主页的url   
           */
       
        
      }   

public static void main(String args[])
{
Browser1 browser1=new Browser1();
Display display=new Display();
Shell shell=browser1.createShell(display);
 
Browser browser = new Browser(shell, SWT.NONE);
  
browser1.createBrowser(display,browser);
browser.setUrl("WWW.HAO123.COM");
  
shell.open();

    while (!shell.isDisposed()) 
 { 
 if (!display.readAndDispatch()) 
display.sleep(); 
 } 
 display.dispose(); 
}
}