×
Namespaces

Variants
Actions
Revision as of 04:53, 26 July 2013 by hamishwillee (Talk | contribs)

Archived:Como usar caixas de diálogo eSWT em Java ME

From Nokia Developer Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

ESWT is a deprecated UI framework. It is not present on Series 40 and on Symbian there are better UI frameworks for using File Dialog (e.g. LWUIT).

Article Metadata

Testado com
Aparelho(s): S60 3rd Ed. FP2 SDK

Compatibilidade
Artigo
Tradução:
Por ivocalado
Última alteração feita por hamishwillee em 26 Jul 2013

Contents

Introdução

Este trecho de código demonstra como usar a classe FileDialog da eSWT para criação de caixas de diálogo em Java ME. Uma FileDialog pode ser aberta e quando um arquivo é selecionado, seu tamanho é exibido na tela. A seguinte seção contem o código completo de utilização justamente com uma aplicação exemplo.


Código Fonte

import javax.microedition.midlet.*;
import org.eclipse.ercp.swt.mobile.Command;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.FillLayout;
import javax.microedition.io.file.FileConnection;
import javax.microedition.io.Connector;
import java.io.IOException;
 
public class FileDialogMIDlet extends MIDlet implements Runnable, SelectionListener {
private Thread UIThread;
private Display display;
private Shell formShell;
private boolean exiting = false;
private Command fileCommand;
private Command exitCommand;
private Text text;
private String textString = "FileDialogMIDlet";
 
public void startApp() {
// Cria a thread eSWT da interface com o usuário
if(UIThread == null) {
UIThread = new Thread(this);
UIThread.start();
}
}
 
public void pauseApp() {
}
 
public void destroyApp(boolean unconditional) {
// Realiza o evento de loop de saída na thread da eSWT
exitEventLoop();
// Espera que a thread da eSWT finalize
try {
UIThread.join();
} catch(InterruptedException e) {
}
}
 
void exitEventLoop() {
exiting = true;
Display.getDefault().wake();
}
 
// A thread da eSWT da interface com o usuário
public void run() {
display = new Display();
FillLayout fillLayout = new FillLayout();
formShell = new Shell(display);
formShell.setLayout(fillLayout);
formShell.open();
Composite form = new Composite(formShell, SWT.NONE);
form.setLayout(fillLayout);
text = new Text(form, SWT.READ_ONLY | SWT.WRAP);
text.setText(textString);
fileCommand = new Command(formShell, Command.SELECT, 0);
fileCommand.setText("Open FileDialog");
fileCommand.addSelectionListener(this);
exitCommand = new Command(formShell, Command.EXIT, 0);
exitCommand.setText("Exit");
exitCommand.addSelectionListener(this);
formShell.redraw();
 
// Executa o evento de loop eSWT
while(!exiting) {
if(!display.readAndDispatch()) {
display.sleep();
}
}
 
// Limpa e destrói a MIDlet
display.dispose();
notifyDestroyed();
}
 
public void widgetDefaultSelected(SelectionEvent e) {
}
 
public void widgetSelected(SelectionEvent e) {
if (e.widget.equals(fileCommand)) {
openFileDialog();
}
if (e.widget.equals(exitCommand)) {
// Comando ''Exit'' selecinoado
exitEventLoop();
}
}
 
public void openFileDialog() {
FileDialog fDialog = new FileDialog(formShell);
fDialog.open();
String filterPath = fDialog.getFilterPath();
String temp = filterPath.replace('\\', '/'); // '\‘ caracteres são substituídos com '/'
filterPath = temp;
String fileName = fDialog.getFileName();
String path = "file:///" + filterPath + fileName;
// path é por exemplo: file:///C:/Data/Images/image.png, este pode ser utilizado como o arquivo
// URL for FileConnection
if (!path.equals("file:///")) {
// Path igual a "file:///", se o compoenente do arquivo é cancelado
try {
FileConnection fc = (FileConnection) Connector.open(path, Connector.READ);
if (!fc.isDirectory()) {
textString = "File size: " + fc.fileSize() + " bytes";
text.setText(textString);
}
} catch (IOException ioe) {
// Lançado se um erro de I/O ocorre ou se o método é invocado em um diretório
// Nota: Não é possível selecionar um diretório através do componente FileDialog.
textString = "IOException: " + ioe.getMessage();
text.setText(textString);
}
catch (SecurityException se) {
// Lançado se o módulo de segurança da aplicação não possui previlégios de leitura para o arquivo
textString = "SecurityException: " + se.getMessage();
text.setText(textString);
}
formShell.redraw();
}
}
}

Pós-condições

Quando um FileDialog é aberto e um arquivo é selecionado, o tamanho do arquivo é exibido na tela.

Veja também

64 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×