hatte zwar schon einen Post.. aber irgendwie konnte ich da wohl das Problem nicht richt darstellen.... habe hier jetzt einen Versuch mit 2 Fenster und dem zughörigen Code.... vielleicht könnt ihr mir dabei eher helfen???
Window1.class
Window2.class
die Window*.class laufen unabhänging voneinander und ich kann die Starten aber ich kann nicht durch das erzeugen einer neuen "new Windows2()" kein zweites fesnter erzeugen nur wenn ich zusätzlich noch "new Windwos2().main(null)" aufrufe also die Mainmethode....
aber warum muss ich noch die Mainmethode aufrufen diese sollte doch automatisch aufgerufen werden wenn ich eine Instanz des Windwos2 objekt erstelle was ich ja mit "new Window2()" ja mache !?!
Window1.class
Code:
package opc.test;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
public class Window1 {
private Shell sShell = null;
private Button button = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/* Before this is run, be sure to set up the launch configuration (Arguments->VM Arguments)
* for the correct SWT library path in order to run with the SWT dlls.
* The dlls are located in the SWT plugin jar.
* For example, on Windows the Eclipse SWT 3.1 plugin jar is:
* installation_directory\plugins\org.eclipse.swt.win32_3.1.0.jar
*/
Display display = Display.getDefault();
Window1 thisClass = new Window1();
thisClass.createSShell();
thisClass.sShell.open();
while (!thisClass.sShell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
/**
* This method initializes sShell
*/
private void createSShell() {
GridData gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.verticalAlignment = GridData.CENTER;
sShell = new Shell();
sShell.setText("Shell");
sShell.setSize(new Point(300, 200));
sShell.setLayout(new GridLayout());
button = new Button(sShell, SWT.NONE);
button.setText("Open Window2");
button.setLayoutData(gridData);
button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
System.out.println("widgetSelected()"); // TODO Auto-generated Event stub widgetSelected()
new Window2();
}
});
}
}
Window2.class
Code:
package opc.test;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Label;
public class Window2 {
private Shell sShell = null;
private Button button = null;
private Label label = null;
private Button button1 = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/* Before this is run, be sure to set up the launch configuration (Arguments->VM Arguments)
* for the correct SWT library path in order to run with the SWT dlls.
* The dlls are located in the SWT plugin jar.
* For example, on Windows the Eclipse SWT 3.1 plugin jar is:
* installation_directory\plugins\org.eclipse.swt.win32_3.1.0.jar
*/
Display display0 = Display.getDefault();
Window2 thisClass = new Window2();
thisClass.createSShell();
thisClass.sShell.open();
System.out.println("main wird aufgerufen");
while (!thisClass.sShell.isDisposed()) {
if (!display0.readAndDispatch())
display0.sleep();
}
display0.dispose();
}
/**
* This method initializes sShell
*/
private void createSShell() {
GridData gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.verticalAlignment = GridData.CENTER;
sShell = new Shell();
sShell.setText("Shell");
sShell.setSize(new Point(300, 200));
sShell.setLayout(new GridLayout());
button = new Button(sShell, SWT.NONE);
button.setText("Open 2nd Window");
button.setLayoutData(gridData);
label = new Label(sShell, SWT.NONE);
label.setText("Fenster ist Offen ");
button1 = new Button(sShell, SWT.NONE);
button1.setText("Schließen");
button1.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
System.out.println("widgetSelected()"); // TODO Auto-generated Event stub widgetSelected()
Shell s = e.display.getActiveShell();
s.close();
}
});
button.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
System.out.println("widgetSelected()"); // TODO Auto-generated Event stub widgetSelected()
}
});
}
}
die Window*.class laufen unabhänging voneinander und ich kann die Starten aber ich kann nicht durch das erzeugen einer neuen "new Windows2()" kein zweites fesnter erzeugen nur wenn ich zusätzlich noch "new Windwos2().main(null)" aufrufe also die Mainmethode....
aber warum muss ich noch die Mainmethode aufrufen diese sollte doch automatisch aufgerufen werden wenn ich eine Instanz des Windwos2 objekt erstelle was ich ja mit "new Window2()" ja mache !?!