SWT:更好地使用新的display.shell方法?

时间:2014-02-27 00:56:49

标签: java shell methods swt

我一直在main方法中完全初始化我的SWT shell,如下所示:

public class MySWTTemplate;
  public static void main(String[] args){
    Display display = new display();

    Shell shell = new Shell(display);
    shell.setSize(250, 250);
    Rectangle bds = getMonitor().getBounds();
    Point p = shell.getSize();
    int xPos = (bds.width - p.x) / 2;
    int yPos = (bds.height - p.y) / 2;
    shell.setBounds(xPos, yPos, p.x, p.y);

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

    }
    display.dispose();
}

但是我看到有些人设置它以便shell启动和定义在他们自己的方法中,而在启动时在屏幕上的单元格定位在另一个中并且两者都通过main方法简单地调用。我抓住了这一点并想出了以下内容:

public class MySWTTemplate;
  public static void main(String[] args){
    Display display = new Display();
    new MySWTTemplate(display);
    display.didpose();
  }

 public MySWTTemplate(Display display){
   Shell shell = new Shell(display);
   shell.setSize(250, 250);
   shellPos(shell);

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

 public void shellPos(Shell shell){
   Rectangle bds = shell.getMonitor().getBounds();
   Point p = shell.getSize();
   int xPos = (bds.width - p.x) / 2;
   int yPos = (bds.height - p.y) / 2;
   shell.setBounds(xPos, yPos, p.x, p.y);
 }

两者都有效。我的两个问题是

1)这样做是为了视觉组织,还是为每个工作调用单独的方法提供了资源利益?

2)有人可以在第二个代码中解释创建MySWTTemplate()方法时发生的事情,然后在main方法中使用“new MySWTTemplate(display)”调用吗?为什么这个方法的名称与该类完全相同?从根本上说这是什么(你不能将这个方法设置为公开使用任何其他方法名称。

1 个答案:

答案 0 :(得分:2)

  1. 这仅适用于代码组织。当然,当它避免重复代码时更有用(例如,因为你需要打开几个shell并以类似的方式定位它们)。

  2. 这不是方法,而是MySWTTemplate类的构造函数。如果您不知道构造函数是什么,那么您应该考虑阅读一本好的Java书或教程,因为您可能也缺少其他同样基本的东西。