Uma tela pra importar um arquivo e exibir os dados

8 respostas
G

Olá,

Para realizar um trabalho da faculdade, que será usado pra uma entidade Filantrópica. Gostaria de saber da parte gráfica usando swing ou outros, como fazer uma tela que eu possa selecionar um arquivo e fazer a importação, ou seja, ler os dados desse arquivo que estará separado por “;” e exibir abaixo. A parte de codificar tenho conhecimento, só tenho dúvidas mesmo na ferramenta, componentes do swing pra selecionar o arquivo, upload file.

Agradeço desde já !

8 Respostas

thiago.correa

Se for swing, use o JFileChooser para abrir a janela para seleção de arquivo!

Procure o tutorial swing da sun, ele é bem passo-a-passo e te ajuda a identificar o uso de cada componente, vale a pena dispender um tempo lendo-o

renzonuccitelli

Adobe Air faz isso de forma fácil e é bem mais bonito que Swing :twisted:

Dá uma olhada no Revelação Virtual e se gostar, baixe o Tour de Flex para ver os componentes.

[]s

Ironlynx

george, use o JFileChooser mesmo, e vc não terá problemas.

Zipa o código e posta aqui.Será que a manutenção é tão fácil quanto o swing? :twisted:

renzonuccitelli

Trabalhei 3 anos com Swing e estou há 1,5 em Air. A diminuição no código é brutal. Basta comparar a facilidade para fazer uma tabela em Air e uma em Swing para vc entender o que que estou falando. E o melhor, em Flex tudo funciona direito por default, já no swing…

Manutenabilidade nada tem a ver com a linguagem que vc está usando, e sim com a qualidade do programador.

Mas isso é opinião pessoal, se kiser fazer em Swing, desejo boa sorte.

[]s

renzonuccitelli

Enfim, acho que é melhor eu mostrar pros incrédulos :twisted:

Anexei o instalador do programa pra quem kiser testar. Ele le um arquivo separado por ; e coloca tudo separado em uma linha de uma tabela. Não me preocupei com redibilidade nem com nada, fiz rápido, em uns 10 minutos, incluindo o instalador, o tempo que deu pau pq o guj não deixou eu colocar como anexo e o tempo pra subir o instalador pro EasyShare: http://www.easy-share.com/[telefone removido]/arquivo.air.

Segue o fonte:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
					   xmlns:s="library://ns.adobe.com/flex/spark"
					   xmlns:mx="library://ns.adobe.com/flex/mx"
					   creationComplete="windowedapplication1_creationCompleteHandler(event)">
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.events.FlexEvent;

			protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void {
				var file:File=File.desktopDirectory;
				file.addEventListener(Event.SELECT,readFileHandler);
				file.browse();
			}

			protected function readFileHandler(event:Event):void {
				var file:File=event.target as File;
				var fileStream:FileStream=new FileStream;
				fileStream.open(file,FileMode.READ);
				var str:String=fileStream.readUTFBytes(fileStream.bytesAvailable);
				var obj:Object={};
				var itemNumber:int=1;
				for each(var s:String in str.split(";")) {
					obj["Item Número "+itemNumber]=s;
					++itemNumber;
				}
				dataGrid.dataProvider=new ArrayCollection([ obj ]);
			}
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<mx:DataGrid id="dataGrid"/>
</s:WindowedApplication>

Agora se alguém acha que é mais fácil fazer isso com Swing, que vai fazer pq gosta de Java, boa sorte. :D

renzonuccitelli

Hum, segue também o resultado que obtive ao executar com um arquivo contendo:

1;2;3

Assim quem não tiver saco de instalar (precisa do Air instalado) pode ver o resultado.

[]s


Ironlynx

renzo, tudo que eu vejo aí é e uma única tela.
E sabemos que LOC não é um indicativo confiável de que é uma aplicação curta.
Posso por 50 linhas de uma app em Haskell aqui e muito mais confundir do que ajudar.

Lembro que tentei usar flex a uns anos atrás, logo no início, e era caótico.Não mexo no Swing há 3 anos como vc.Mexo há mais de oito.Para mim é fácil a grande maioria das aplicações, mas sempre tende a complicar quando por exemplo, um usuário quer tudo “on-the-fly”, JTextFields e JComboBoxes com autocomplete(e com milhares de linhas), e abrir um arquivo de dezenas de megas e tacar tudo do Excel para um BD analisando linha a linha determinado conteúdo dentro da aplicação, ou 120 campos que interagem entre si(uma app que fiz para análise de IPTU).
Anos atrás, os exemplos em Flex eram fracos e confusos.Dando uma pesquisada agora achei coisas interessantes como o site do DavidBuzatto daqui mesmo no guj: http://davidbuzatto.wordpress.com/ (pena que ele usa NetBeans, eu prefiro o Eclipse-mas é uma app bem completa).
Renzo, vc possui alguns links falando de seu uso e principalmente, do uso de recursos da máquina, distribuição e eventuais leaks?

renzonuccitelli

Então, o fato é que trabalhei com as duas plataformas, e o Air dá um banho no Swing, na minha opinião. Como eu disse, Manutenabilidade depende do programador e sua proeficiencia na tecnologia, dos processos de desenvolvimento e etc etc.
Se um cara que não sabe nada hj de programação e me perguntasse o que usar pra desenvover um deskotp, eu diria para usar Air em Vez de Java + Swing sem pensar duas vezes.

Acho que a grande sacada também da Adobe é o Tour de Flex. Instale-o em sua máquina, veja os componentes, e a parte de acesso à máquina do computador em air, parte de Drag and Drop Nativo, acesso a sqlite local, entre outras coisas.

Eu sei que LOC não é uma métrica perfeita por si só. Mas se vc ver o quão direto foi pra fazer esse programa, e comparar com verbosidade do Swing (e do próprio Java), pode ser que vc chegue à mesma conclusão que a minha. Detalhe que eu só acrescentei a tabela no xml (uma linda) e só fiz a parte de dentro do script.
A plataforma da Adobe melhorou bastante, principalmente com o lançamento do Flex 4 e Air 2.0.

Mas preferência por tecnologia não tem certo ou errado. Qdo uma pessoa diz eu gosto disso, não tem argumento contra isso.

Java pra mim hj em dia só no backend, e mesmo assim já estou estudando outras tecnologias.

[]s

Criado 16 de setembro de 2010
Ultima resposta 17 de set. de 2010
Respostas 8
Participantes 4