Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
amiloM1425

JFileChooser Drag não funciona

Recommended Posts

amiloM1425

Olá a todos,

Num JFileChooser que estou a utilizar é possível seleccionar e abrir vários ficheiros ao mesmo tempo, o que seria óptimo deixar que o utilizador arrastasse o rato sobre os ficheiros que pretende abrir para os seleccionar.

Já tenho o seguinte código mas não estou a conseguir seleccionar vários ficheiros por "arrasto".

fc.setMultiSelectionEnabled(true);
fc.setDragEnabled(true);

Estará a faltar-me definir alguma propriedade ou é bug do JAVA?

Cumprimentos

Share this post


Link to post
Share on other sites
Knitter

É mais uma falha de conhecimento ou de compreensão do programador ;)

Drag & Drop, que é o que esse método activa, é um sistema que permite arrastar e largar componentes de e para outros componentes Swing ou outras aplicações. Isto é, o que estás a activar é a possibilidade de arrastares um ficheiro ou pasta para fora do JFileChooser e o colocares dentro de outro componente, seja na mesma aplicação, em aplicações diferentes, ou directamente em sistemas do sistema operativo que suportem Drag & Drop, como o desktop.

Esse método não possibilita a criação de caixas de selecção para seleccionar um conjunto de ficheiros, permite sim, arrastar um ficheiro, ou conjunto de ficheiros para dentro de outro ficheiro ou para fora desse componente e para dentro de outro componente. Por exemplo, podias ter um JFileChooser colocado numa frame, que estaria sempre aberto, e permitir ao utilizador seleccionar um ficheiro, arrastá-lo para dentro de um JTextField, e o campo de texto ficar preenchido automaticamente com o caminho para o ficheiro. Ou arrastares um ficheiro de uma imagem para um painel e a imagem aparecer automaticamente no fundo do painel.

Que eu saiba, os Look-and-Feel comuns não permitem fazer o que pretendes, nem o Look-and-Feel do Windows tem essa possibilidade.

Share this post


Link to post
Share on other sites
amiloM1425

É mais uma falha de conhecimento ou de compreensão do programador ;)

Pois, realmente esqueci-me de colocar essa hipótese  :)

Antes de mais obrigado pelo esclarecimento sobre o que é efectivamente o Drag & Drop  ;)

Em relação à funcionalidade, é uma pena não dar para seleccionar vários através de uma caixa de selecção.

Share this post


Link to post
Share on other sites
Knitter

Que eu conheça, não existe propriedade nenhuma para esse efeito, é algo que está dependente do L&F e não conheço nenhum que implemente essa opção. Mas isso não quer dizer que não dê, apenas que eu não conheço ;)

Não sei é se compensará o tempo de pesquisa pela pouco que vais ganhar.

Share this post


Link to post
Share on other sites
amiloM1425

Que eu conheça, não existe propriedade nenhuma para esse efeito, é algo que está dependente do L&F e não conheço nenhum que implemente essa opção. Mas isso não quer dizer que não dê, apenas que eu não conheço :)

Não sei é se compensará o tempo de pesquisa pela pouco que vais ganhar.

Sim, não vou estar a bater muito mais contra isto, até porque a funcionalidade que envolve abrir os ficheiros é trabalho para ir durar uns dias lol :D

Fui ver se de facto o do windows não permite a selecção de vários ficheiros ao mesmo tempo com o rato mas funciona. O que testei foi o do Word e dá para seleccionar vários ficheiros e abri-los todos.

Share this post


Link to post
Share on other sites
Knitter

Quando falei que não conhecia era relacionado com a tecnologia Java, os L&F que existem por omissão não permitem isso, outras aplicações permitem sim, mas neste caso não te ajudam muito porque quem está a controlar o que um componente pode ou não fazer é o L&F definido para a aplicação.

Share this post


Link to post
Share on other sites
amiloM1425

Quando falei que não conhecia era relacionado com a tecnologia Java, os L&F que existem por omissão não permitem isso, outras aplicações permitem sim, mas neste caso não te ajudam muito porque quem está a controlar o que um componente pode ou não fazer é o L&F definido para a aplicação.

Hum, ok.

Já agora quando falas nos L&F relacionados com a tecnologia Java falas no plural, há portanto mais do que o típico JFileChooser é isso?

E já agora, é possível mudar o aspecto do JFileChooser? Os textos e os tool tips dos botões sei que dá.

Share this post


Link to post
Share on other sites
Knitter

Look-and-Feel é um conjunto de regras que definem como os componentes se comportam, que aspecto têm, como regem às acções do utilizador, etc., Wikipedia: http://en.wikipedia.org/wiki/Pluggable_look_and_feel

Em Java existe o conceito de "Pluggable Look and Feel", isto é, as características como o comportamento dos componentes e o seu aspecto não são definidas pelos componentes mas sim por um sistema separado, que pode ser alterado em tempo de execução, daí o "pluggable", e trocado por outro. L&F de Java não são o mesmo que skins, uma skin muda apenas o aspecto genérico, o L&F faz muito mais, e um L&F pode fazer com que uma aplicação se comporte de forma completamente diferente do que outro L&F determina.

Para veres mais sobre L&F em Java, com alguns exemplos, o primeiro do L&F oficial do Java, e que corre em qualquer plataforma, o segundo o L&F de Windows, que está apenas disponível para aplicações que estejam a executar em sistemas operativos Windows, não executam noutros SOs.

http://java.sun.com/docs/books/tutorial/ui/features/components.html

http://java.sun.com/docs/books/tutorial/ui/features/compWin.html

Exemplos de L&F diferentes, e alterações que provocam nos componentes:

http://java.sun.com/docs/books/tutorial/ui/features/plaf.html

Não existe mais que um típico JFileChooser, o componente será sempre o mesmo, quando falo em mais que um L&F, falo em mais que um conjunto de regras que, quando aplicadas ao JFileChooser, lhe alteram, entre outras coisas, o comportamento e o aspecto.

Claro que podem existir mais implementações de JFileChoosers, em bibliotecas externas, mas não me refiro a isso, ao falar de L&F estou a falar de regras que podem ser aplicadas aos componentes que são padrão no Swing.

Em todos os JDK tens, se não os estou a contar mal, 5 L&Fs diferentes, um para cada sistema operativo principal, Windows, Mac OS, Linux, o oficial do Java, chamado Metal e, no Java 6 update 10, o Synth, que é um L&F há muito esperado e há muito iniciado que só agora foi lançado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.