package gui;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
public class Application extends ApplicationWindow {
public Application(){
super(null);
}
@Override
protected Control createContents(Composite parent){
getShell().setLayout(null);
getShell().setMaximized(true);
Button button = new Button(getShell(),SWT.PUSH);
button.setBounds(10,10,100,35);
button.setText("Clique Aqui");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event){
}});
return parent;
}
public static void main(String[] args) {
ApplicationWindow window = new Application();
window.setBlockOnOpen(true);
window.open();
Display.getDefault().dispose();
};
}
Boa dia a todos.
Fiz essa classe conforme algumas leituras que encontrei.
Até ai beleza. A Aplicacação roda normalmente. Ai criei outra classe que herda da Classe Shell do SWT.
Ficou assim
package gui;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class TForm extends Shell {
public TForm() {
}
public TForm(int arg0) {
super(arg0);
}
public TForm(Display arg0) {
super(arg0);
}
public TForm(Shell arg0) {
super(arg0);
}
public TForm(Display arg0, int arg1) {
super(arg0, arg1);
}
public TForm(Shell arg0, int arg1) {
super(arg0, arg1);
}
}
ai Na parte do código da primeira classe,
@Override
public void widgetSelected(SelectionEvent event){
TForm form = new TForm(getShell());
form.open();
}});
Esse código compila mas gera erro,o seguinte erro
org.eclipse.swt.SWTException: Subclassing not allowed
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Decorations.checkSubclass(Unknown Source)
at org.eclipse.swt.widgets.Shell.<init>(Unknown Source)
at org.eclipse.swt.widgets.Shell.<init>(Unknown Source)
at org.eclipse.swt.widgets.Shell.<init>(Unknown Source)
at gui.TForm.<init>(TForm.java:20)
at gui.Application$1.widgetSelected(Application.java:29)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:561)
at org.eclipse.jface.window.Window.open(Window.java:541)
at gui.Application.main(Application.java:38)
não entendo porque, eu herdei a classe shell e chamo o construtor da classe pai.
teoricamente era para funcionar
se eu faço assim funciona corretamente;
public void widgetSelected(SelectionEvent event){
Shell form = new Shell(getShell());
form.open();
}});
Ou seja a classe que eu quero criar que herda de shell, gera a exception. Só não entendo porque pois estou chamando o constructor da classe pai, no constructor da minha classe.
alguém sabe oque fazer