×
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

101 page views in the last 30 days.
×