SWT - Eventos para Botões

8 respostas
S

Pow…
Alguém me da um help por vafor…
Ja cacei em varios lugares como eu adiciono os eventos ao botões abrir e ao fechar, mas num axo, e quando axo num eh do jeito q eu espero que funcione!!!
Estou fazendo em SWT!!!
Minhas pergunta são:

  • Como faço o botão que eu criei chamado “abrir…” abrir a janela de “abrir arquivos” do windows???

  • Como faço pra que o botão fechar que eu também criei (lembrando q é em SWT) fechar a jenela em que ele está, como se fosse o “X” (SWT.CLOSE) localizado em cima da janela???

Valew ae

8 Respostas

magnojg

Sei em awt para a 2ª pergunta, mas pode ser q o codio final seja o mesmo (com comentário):

jMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.exit(0); //esse aqui } });

S

vixx…
o System.exit(0) fecha o aplicativo inteiro…
Eu queria fechar só o frame em que eu to mexendo…
mas de qqr forma, vlw

marllonSimoes

coloca no framq euvc quer

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
e nobotãod e fechar

[]'s

leonardom

é SWT né?

tenta isso:

button.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
         shell.dispose();
    }
});
marllonSimoes

coloca no framq euvc quer
Code:

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

e nobotãod e fechar
Code:

Frame.this.setVisible(false);

[]'s

Falha grande… pensei uma coisa escrevi outra… malz…

leonardom

Ah me esqueci, para abrir o dialog de arquivos do windows, use:

FileDialog dialog = new FileDialog(shell);
dialog.open();

Para mais detalhes consunte a API do SWT:
http://help.eclipse.org/help31/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/FileDialog.html

S

Ae pessoal...
Valew mesmo...
Consegui abrir a janela q abre arquivos do windows!!
Só que num consigo fechar a janela que estou trabalhando... da um erro onde está escrito shell...
Olhem o codigo:

public static void main(String[] args) {
		showGUI();
	}		
	
	public static void showGUI() {
		Display display = Display.getDefault();
		Shell shell = new Shell(display);
		shell.setText("Cadastro de item");
		CadastroItem inst = new CadastroItem(shell, SWT.NULL);
		Point size = inst.getSize();
		shell.setLayout(new FillLayout());
		shell.setImage(SWTResourceManager.getImage("Ícones/empty.png"));
		shell.setBounds(100, 29, 513, 367);
		shell.layout();
		if(size.x == 0 && size.y == 0) {
			inst.pack();
			shell.pack();
		} else {
			Rectangle shellBounds = shell.computeTrim(0, 0, size.x, size.y);
			shell.setSize(shellBounds.width, shellBounds.height);
		}
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
	}

	public CadastroItem(org.eclipse.swt.widgets.Composite parent, int style) {
		super(parent, style);
		initGUI();
	}

	private void initGUI() {
		try {
			this.setLayout(new GridLayout());
			this.setSize(505, 481);
			{		
		...
               ...	                                                      
		cmdTab_Prop_Cancelar = new Button(
		cmpPropriedades,
		SWT.PUSH | SWT.CENTER);	
		cmdTab_Prop_Cancelar.setText("&Cancelar");
		cmdTab_Prop_Cancelar.setBounds(136, 414, 85, 25);	
		cmdTab_Prop_Cancelar.addSelectionListener(new SelectionAdapter() {
		public void widgetSelected(SelectionEvent e) {
                      shell.dispose(); // ESSE SHELL!!
		}
		});
	}
}...
Alguém como faço pra fechar esse shell? Obrigado de novo... :D
leonardom

Tente declarar use shell como final:

final Shell shell = new Shell(display);

Ah! tem um outro detalhe vc ta tentando usar a variavel shell que vc definiu localmente no seu método showGUI, para poder usa-la nos outros métodos essa variavel vai ter ser declarada na classe.

Criado 7 de dezembro de 2006
Ultima resposta 8 de dez. de 2006
Respostas 8
Participantes 4