Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

vasco16

Listar directoria

Mensagens Recomendadas

vasco16

Boas pessoal estou a programar uma aplicação em swing e gostaria de saber como posso listar a pasta onde tenho os meus ficheiro .java (uso eclipse) mas tendo como objectivo listar certos tipos de ficheiros, por exemplo só imagens .jpg .

tive a pesquisar e acho que devo listar para um array esses ficheiros, mas depois como os posso apresentar(tenciono apresenta-los no borderlayout.west) ? num JPanel? mas o objectivo é listar e depois ao seleccionar o nome desse ficheiro abri-lo no centro do borderLayout.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
DVD

Mas queres que o utilizador escolha a directoria?

caso sim tens a class JFileChooser que permite definir as extensões que queres que o utilizador selecione etc.

Depois disso é usares a class File e ires buscar o que te apetece.

Podes apresentar como te apetecer, como se costuma dizer tudo é possível é só ter vontade e dedicação e aparece feito xD.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Mas queres que o utilizador escolha a directoria?

caso sim tens a class JFileChooser que permite definir as extensões que queres que o utilizador selecione etc.

Depois disso é usares a class File e ires buscar o que te apetece.

Podes apresentar como te apetecer, como se costuma dizer tudo é possível é só ter vontade e dedicação e aparece feito xD.

A directoria é onde é executada a minha classe.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Então é só criares um File f = new File("\\src");

Peço desculpa, disse mal, o que pretendo mostrar é a directoria antes do src.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Atenção aos caminhos. "\\src" não é um caminho válido.

Há algumas coisas que não percebi: Tens a aplicação Swing a correr e queres listar todos os ficheiros que estejam na directoria onde a aplicação está a executar? Ou queres ter um botão para escolher a directoria e mostrar os ficheiros dessa directoria?

Tenho um exemplo, algo complexo porque foi feito para outra coisa, mas que poderá servir para teres uma ideia de como implementar uma listagem não recursiva de ficheiros em pastas: http://svn.berlios.de/wsvn/jfindmyfiles/trunk/project/JFindMyFiles/ReadingFiles/src/de/berlios/jfindmyfiles/readingfiles/MediaReader.java

No pasta http://svn.berlios.de/wsvn/jfindmyfiles/trunk/spikes/ existem também alguns projectos que podes ver, tem código para listar ficheiros de forma recursiva e usando uma pilha.

Listar ficheiros é relativamente simples, a classe File tem um método mesmo específico para isso, o problema principal será determinar onde está a directoria que queres usar como base, e a forma mais simples é mesmo usando um JFileChooser.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Atenção aos caminhos. "\\src" não é um caminho válido.

Há algumas coisas que não percebi: Tens a aplicação Swing a correr e queres listar todos os ficheiros que estejam na directoria onde a aplicação está a executar? Ou queres ter um botão para escolher a directoria e mostrar os ficheiros dessa directoria?

Tenho um exemplo, algo complexo porque foi feito para outra coisa, mas que poderá servir para teres uma ideia de como implementar uma listagem não recursiva de ficheiros em pastas: http://svn.berlios.de/wsvn/jfindmyfiles/trunk/project/JFindMyFiles/ReadingFiles/src/de/berlios/jfindmyfiles/readingfiles/MediaReader.java

No pasta http://svn.berlios.de/wsvn/jfindmyfiles/trunk/spikes/ existem também alguns projectos que podes ver, tem código para listar ficheiros de forma recursiva e usando uma pilha.

Listar ficheiros é relativamente simples, a classe File tem um método mesmo específico para isso, o problema principal será determinar onde está a directoria que queres usar como base, e a forma mais simples é mesmo usando um JFileChooser.

Obrigado pela resposta.:D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Há alguma razão especial para tentares implementar um JFileChooser de forma manual? É que até é um componente que se pode colocar dentro de um JPanel e estar sempre visível :D

De qualquer forma, sim, o problema está nessa condição já que estás a aceitar também directorias. Se não quiseres aceitar directorias vais ter um problema, não consegues entrar dentro de uma directoria, isto é, ficas preso na directoria onde iniciaste a listagem. Se isso não é um problema, então tira a condição da directoria.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Há alguma razão especial para tentares implementar um JFileChooser de forma manual? É que até é um componente que se pode colocar dentro de um JPanel e estar sempre visível :D

De qualquer forma, sim, o problema está nessa condição já que estás a aceitar também directorias. Se não quiseres aceitar directorias vais ter um problema, não consegues entrar dentro de uma directoria, isto é, ficas preso na directoria onde iniciaste a listagem. Se isso não é um problema, então tira a condição da directoria.

Algo deste genero:

------------------------------------

|            |

|            |                2

|    1      |

|            |

-----------------------------------

Listar directorias e ficheiros no lado 1, e depois abri-los no lado 2.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

OK, então assim por alto e respondendo também um pouco ao outro tópico deves ter:

- Um JSplitPane que divida o espaço. Este componente é o componente base a usar.

- Um JScrollPane (A) no lado esquerdo do separador

- Uma JList dentro de A, que liste os vários ficheiros. Poderás precisar criar uma pequena classe wrapper para mostrar apenas o nome do ficheiro e não o cominho completo.  Esta lista vai ter as acções quando o utilizador escolher o ficheiro. Deves colocar o tipo de selecção a single selection, para não permitires vários itens seleccionados.

- No lado direito deves colocar JPanels de acordo com o tipo de ficheiro. Deves ter um para imagens, podes ver o exemplo que está na wiki sobre como colocar uma imagem num fundo de um painel ou usar uma JLabel, outro com uma JTextArea, neste caso tens o JPanel com um novo JScrollPane e este último com a JTextArea, para que o scroll ocorra apenas para o texto. E teres um painel vazio com uma simples imagem para os waves. Todos este JPanels devem ter um FlowLayout, é o mais simples.

- No fim, o JSplitPane é adiconar ao root content da frame, e apenas este que é o elemento que tem tudo.

- A frame pode ter um FlowLayout ou um BorderLayout, neste último caso colocas o componente no centro.

Acho que isto cobre a interface tipica.

Depois precisas de criar o método que veja quando o utilizador clicar num item da JList e agir em conformidade.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

OK, então assim por alto e respondendo também um pouco ao outro tópico deves ter:

- Um JSplitPane que divida o espaço. Este componente é o componente base a usar.

- Um JScrollPane (A) no lado esquerdo do separador

- Uma JList dentro de A, que liste os vários ficheiros. Poderás precisar criar uma pequena classe wrapper para mostrar apenas o nome do ficheiro e não o cominho completo.  Esta lista vai ter as acções quando o utilizador escolher o ficheiro. Deves colocar o tipo de selecção a single selection, para não permitires vários itens seleccionados.

- No lado direito deves colocar JPanels de acordo com o tipo de ficheiro. Deves ter um para imagens, podes ver o exemplo que está na wiki sobre como colocar uma imagem num fundo de um painel ou usar uma JLabel, outro com uma JTextArea, neste caso tens o JPanel com um novo JScrollPane e este último com a JTextArea, para que o scroll ocorra apenas para o texto. E teres um painel vazio com uma simples imagem para os waves. Todos este JPanels devem ter um FlowLayout, é o mais simples.

- No fim, o JSplitPane é adiconar ao root content da frame, e apenas este que é o elemento que tem tudo.

- A frame pode ter um FlowLayout ou um BorderLayout, neste último caso colocas o componente no centro.

Acho que isto cobre a interface tipica.

Depois precisas de criar o método que veja quando o utilizador clicar num item da JList e agir em conformidade.

Entendi 70% do que disses-te mas não sei como implementar, tens algum manual? tutorial? sobre estes assuntos sem ser as API?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Só o da Sun, procura no google por Java Tutorial, depois acede ao Really Big Index, é um link que fica do lado direito da página. Parece um botão.

E tenho os exemplos que coloquei ou que tenho na minha wiki ou na wiki do P@P. Na wiki do P@P quase todos os exemplos foram feitos com o designer de interfaces do NetBeans por isso não te darão muita ajuda. Mas as aplicações que tenho na minha wiki, na secção escolar para as cadeiras de P4 e possivelmente ES1, em 2004/2005 e 2007/2008 podem ter exemplos de código mais fácil de perceber.

Segue os pontos que indiquei por ordem, vai construindo os componentes e adicionado pela ordem.

Outro aviso, se substituíres componentes enquanto a aplicação está a executar, terás de invocar o método validate() na frame.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

OK, então assim por alto e respondendo também um pouco ao outro tópico deves ter:

- Um JSplitPane que divida o espaço. Este componente é o componente base a usar.

- Um JScrollPane (A) no lado esquerdo do separador

- Uma JList dentro de A, que liste os vários ficheiros. Poderás precisar criar uma pequena classe wrapper para mostrar apenas o nome do ficheiro e não o cominho completo.  Esta lista vai ter as acções quando o utilizador escolher o ficheiro. Deves colocar o tipo de selecção a single selection, para não permitires vários itens seleccionados.

- No lado direito deves colocar JPanels de acordo com o tipo de ficheiro. Deves ter um para imagens, podes ver o exemplo que está na wiki sobre como colocar uma imagem num fundo de um painel ou usar uma JLabel, outro com uma JTextArea, neste caso tens o JPanel com um novo JScrollPane e este último com a JTextArea, para que o scroll ocorra apenas para o texto. E teres um painel vazio com uma simples imagem para os waves. Todos este JPanels devem ter um FlowLayout, é o mais simples.

- No fim, o JSplitPane é adiconar ao root content da frame, e apenas este que é o elemento que tem tudo.

- A frame pode ter um FlowLayout ou um BorderLayout, neste último caso colocas o componente no centro.

Acho que isto cobre a interface tipica.

Depois precisas de criar o método que veja quando o utilizador clicar num item da JList e agir em conformidade.

	JSplitPane divideEspaco = new JSplitPane();
	JScrollPane ladoEsquerdo = new JScrollPane();
	divideEspaco.setLeftComponent(ladoEsquerdo);

	File directoria = new File(".");
	String[] nomeDosFicheiros = directoria.list();
	JList lista = new JList (nomeDosFicheiros);
	ladoEsquerdo.add(lista);
	lista.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);

	ladoDireito  = new JPanel();
	cima  = new JPanel();

	divideEspaco.setRightComponent(ladoDireito);
	JFrame janela = new JFrame("Progr: ");
	janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	janela.add(divideEspaco);
	janela.add(cima, BorderLayout.NORTH);
	janela.setSize(600,400);
	janela.setVisible(true);

O que é que estou aqui a fazer mal? Não me aparece a lista no lado esqerdo.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

O que é que estou aqui a fazer mal? Não me aparece a lista no lado esqerdo.

Várias coisas, uma delas, não ler a documentação :)

Deixei alguns comentários no código, convém ires adicionando as coisas por ordem se queres tirar partido dos comportamentos por omissão, se não adicionares por ordem, então vais ter de invocar mais métodos para definir algumas propriedades, por exemplo, o JScrollPane recebe no construtor um componente que vai mostrar, se o passares fica tudo configurado por ti, se não o adicionares no construtor e usares o método add(Component) mais tarde, então tens de definir o viewPort manualmente.


import java.awt.BorderLayout;
import java.awt.Dimension;
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.ListSelectionModel;

public class FileExplorer extends JFrame {
    private final JPanel cima;
    private final JPanel ladoDireito;

    public FileExplorer() {
        super("Title: ...");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        JSplitPane divideEspaco = new JSplitPane();
        divideEspaco.setDividerLocation(200);

        //Atenção à documentação dos métodos e classes!
        //Da documentação da classe:
        //
        //Applications that don't provide the view directly to the JScrollPane
        //constructor should use this method to specify the scrollable child
        //that's going to be displayed in the scrollpane

        //Logo, esta sequência de código deve ter em conta o método acima ou então
        //usas o que coloquei mais abaixo..
        //
        //JScrollPane ladoEsquerdo = new JScrollPane();
        //ladoEsquerdo.add(lista);
        //divideEspaco.setLeftComponent(lista);

        //Funciona mas não te é garantido resultados coerentes...
        //File directoria = new File(System.getProperty("."));
        
        //Directoria de trabalho, working dir, é dada pela propriedade user.dir
        //indica em que directoria a aplicação foi iniciada
        File directoria = new File(System.getProperty("user.dir"));
        String[] nomeDosFicheiros = directoria.list();
        JList lista = new JList(nomeDosFicheiros);

        //alterantiva ao código que adicionava a lista ao scrollpane, não estou a
        //guardar a referência para o jscrollpane,....
        divideEspaco.setLeftComponent(new JScrollPane(lista));


        lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        ladoDireito = new JPanel();
        cima = new JPanel();
        divideEspaco.setRightComponent(ladoDireito);

        //Definir o layout!
        setLayout(new BorderLayout());
        add(cima, BorderLayout.NORTH);

        //se o de cima tem uma posição o de baixo também!
        add(divideEspaco, BorderLayout.CENTER);
        setSize(600, 400);
        //e
        setPreferredSize(new Dimension(600, 400));

        //pedir um ajuste de todos os componentes
        pack();
    }

    public static void main(String[] args) {
        new FileExplorer().setVisible(true);
    }
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Como posso resolver este warning: "The serializable class FileExplorer does not declare a static final serialVersionUID field of type long"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Declara o campo static final long serialVersionUID. E atribui um valor que seja único no teu projecto.

Embora não seja obrigatório é conveniente quando usas serialização, mas atenção, se alterares esse ID, todas as classes que já tenhas serializado deixam de ser válidas, mesmo que não tenhas alterado a estrutura da classe.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Declara o campo static final long serialVersionUID. E atribui um valor que seja único no teu projecto.

Embora não seja obrigatório é conveniente quando usas serialização, mas atenção, se alterares esse ID, todas as classes que já tenhas serializado deixam de ser válidas, mesmo que não tenhas alterado a estrutura da classe.

Certo, agora para programar uns botões que irão ficar no JPanel: cima, devo programa-los (declarar e definir cores etc etc) no main ou na classe FileExplorer?

Já agora qual é a melhor forma para dispor botões? FlowPanel ? Grid?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Deves colocar os botões como variáveis de instância na classe, nunca no método main, que no meu exemplo nem está muito correcto, foi feito para rápido não correcto.

Quanto às disposições, depende do que pretendes fazer. Se colocares os botões todos numa barra de ferramentas não tens de te preocupar com a disposição, se estás a colocar botões num painel vais ter de ver se tens muitos botões, se podem ficar uns ao lado dos outros, se precisam ser distribuídos em grelha, enfim, depende sempre do que pretendes fazer.

Um FlowLayout é simples de usar, vai acrescentar todos os botões pela ordem em que forem adicionados e ajustar ao espaço. Pode ser vertical ou horizontal.

Um GridLayout ou GridBagLayout vai trabalhar o espaço como uma grelha e vais ter de configurar mais informação.

Qualquer um dos layouts serve, até um BorderLayout serve para colocar botões :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Deves colocar os botões como variáveis de instância na classe, nunca no método main, que no meu exemplo nem está muito correcto, foi feito para rápido não correcto.

Quanto às disposições, depende do que pretendes fazer. Se colocares os botões todos numa barra de ferramentas não tens de te preocupar com a disposição, se estás a colocar botões num painel vais ter de ver se tens muitos botões, se podem ficar uns ao lado dos outros, se precisam ser distribuídos em grelha, enfim, depende sempre do que pretendes fazer.

Um FlowLayout é simples de usar, vai acrescentar todos os botões pela ordem em que forem adicionados e ajustar ao espaço. Pode ser vertical ou horizontal.

Um GridLayout ou GridBagLayout vai trabalhar o espaço como uma grelha e vais ter de configurar mais informação.

Qualquer um dos layouts serve, até um BorderLayout serve para colocar botões :)

Hum, mas o meu objectivo é conforme o item seleccionado na lista ser apresentado x botoes cada um com funções relativas ao item seleccionado.

Estava a pensar em fazer em modo FlowLayout e depois conforme o item seleccionado , metia visivel ou não o certo botão, mas isso não vai dar certo.. porque os botões visiveis ou nao, estão lá a marcar espaço não é?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Depende do layout do componente que tem o painel de botões, se o layout permitir, ao esconderes um componente, os outros assumem o espaço deixado. Mas para isto tens de invocar o método validate, e por vezes o pack.

Mas porque não usas um barra de ferramentas, JToolBar, e tornas os botões activos ou inactivos conforme exista ou não um elemento seleccionado, é mais simples e mais fácil de perceber para o utilizador, além de evitar "coisinhas a saltar" na janela da aplicação.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Depende do layout do componente que tem o painel de botões, se o layout permitir, ao esconderes um componente, os outros assumem o espaço deixado. Mas para isto tens de invocar o método validate, e por vezes o pack.

Mas porque não usas um barra de ferramentas, JToolBar, e tornas os botões activos ou inactivos conforme exista ou não um elemento seleccionado, é mais simples e mais fácil de perceber para o utilizador, além de evitar "coisinhas a saltar" na janela da aplicação.

Vou verificar essa barra de ferramentas.

Obrigado por tudo :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Como é que centro um label num panel?

label.setLocation(1, 40);
				ladoDireito.add(label);
				validate();

Não faz nada :S

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vasco16

Colocas um layout que te facilite centrar os elementos, por exemplo um borderlayout e colocas a JLabel no centro. Um flowLayout também centra o elemento se for só um.

Porque é que eu não consigo centar a imagem? ou um JAreaText num panel?

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.Color;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.net.MalformedURLException;
import java.util.LinkedList;
import java.util.Scanner;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.ListSelectionModel;

import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;


public class FileExplorer extends JFrame{

/**
 * 
 */
private static final long serialVersionUID = 1L;
private JList lista;
private JToolBar barraDeCima;
private JPanel ladoDireito;
private JSplitPane divideEspaco;
private File directoria;
private String[] nomeDosFicheiros;
private JButton up,down,color,play,stop;
private AudioClip musica;
private JTextArea text;

public FileExplorer(){
	//constroi Frame
	super("FileExplorer");
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	//directoria
	directoria = new File(System.getProperty("user.dir"));

	//componente principal
	divideEspaco = new JSplitPane();
	divideEspaco.setDividerLocation(150);

	//trata da lista
	nomeDosFicheiros = directoria.list();
	lista = new JList(filtra(nomeDosFicheiros));

	//preenche esquerda
	divideEspaco.setLeftComponent(new JScrollPane(lista));

	//lado direito
	ladoDireito = new JPanel();
	ladoDireito.setBackground(Color.WHITE);
	divideEspaco.setRightComponent(ladoDireito);

	//barra e botoes
	barraDeCima = new JToolBar();
	up = new JButton("up", new ImageIcon("up.png"));
	down = new JButton("down", new ImageIcon("down.png"));
	color = new JButton("color", new ImageIcon("color.png"));
	play = new JButton("play", new ImageIcon("play.png"));
	stop = new JButton("stop", new ImageIcon("stop.png"));
	barraDeCima.add(up);
	barraDeCima.add(down);
	barraDeCima.add(color);
	barraDeCima.add(play);
	barraDeCima.add(stop);	
}

public void run(){
	color.setVisible(false);
	play.setVisible(false);
	stop.setVisible(false);
	setLayout(new BorderLayout());
	add(barraDeCima, BorderLayout.NORTH);
	add(divideEspaco, BorderLayout.CENTER);

	setSize(600,400);
	setPreferredSize(new Dimension(600,400));

	setVisible(true);
	pack();
	//rename do titulo
	setTitle("FileExplorer: "+getLocalizacao());
	lista.addListSelectionListener(new ListListener());
	lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}

private String[] filtra(String[] nomeDosFicheiros2) {
	LinkedList<String> lista = new LinkedList<String>();
	lista.addLast(".");
	lista.addLast("..");
	for(int i = 0; i < nomeDosFicheiros2.length; i++){
		File dir = new File(nomeDosFicheiros2[i]);
		if (dir.isDirectory() || nomeDosFicheiros2[i].endsWith(".jpg") ||
				nomeDosFicheiros2[i].endsWith(".gif") || 
				nomeDosFicheiros2[i].endsWith(".wav") ||
				nomeDosFicheiros2[i].endsWith(".txt")){
			lista.addLast(nomeDosFicheiros2[i]);
		}
	}
	String[] filtrado = new String[lista.size()];
	for(int i = 0; i < filtrado.length; i++){
		filtrado[i] = lista.get(i);
	}
	return filtrado;
}

private String getLocalizacao(){
	return directoria.getName();
}

private class ListListener implements ListSelectionListener{
	@SuppressWarnings("deprecation")
	public void valueChanged(ListSelectionEvent e){
		if(musica != null){
			musica.stop();
		}
		ladoDireito.removeAll();
		if(!(lista.getValueIsAdjusting())){
			String nome = (String)lista.getSelectedValue();
			setButtons();
			//Imagens
			if(nome.endsWith(".jpg") || nome.endsWith(".gif")){
				JLabel label = new JLabel();					
				label.setIcon(new ImageIcon(nome));
				JScrollPane sp = new JScrollPane(label);
				ladoDireito.add(sp);
				validate();
				repaint();
				pack();
			}
			//musica
			if(nome.endsWith(".wav")){
				play.setVisible(true);
				stop.setVisible(true);
				ladoDireito.removeAll();
				repaint();
				try {

					musica = Applet.newAudioClip(new File(nome).toURL());
					play.addActionListener(new ActionListener(){
						public void actionPerformed(ActionEvent e){

							musica.play();
						}
					});

					stop.addActionListener(new ActionListener(){
						public void actionPerformed(ActionEvent e){
							musica.stop();
						}
					});
				} catch (MalformedURLException e1) {
					//nada
				}
			}

			if(nome.endsWith(".txt")){
				color.setVisible(true);
				ladoDireito.removeAll();
				try {
					Scanner leitor = new Scanner(new FileReader(nome));
					StringBuilder out = new StringBuilder();

					while(leitor.hasNextLine()){
						out.append(leitor.nextLine());
						out.append('\n');
					}
					leitor.close();
					text = new JTextArea(out.toString());
					JScrollPane scroll = new JScrollPane(text);
					scroll.setPreferredSize(new Dimension(200,200));
					ladoDireito.add(scroll);
					color.addActionListener(new ActionListener(){
						public void actionPerformed(ActionEvent e){
							Color bgcolor = JColorChooser.showDialog(ladoDireito,"Escolha uma cor", Color.black);
							if (bgcolor!=null){
								text.setForeground(bgcolor);
							}
						}
					});
					validate();
					repaint();
				} 
				catch (FileNotFoundException e1) {
					//nada
				}
			}

			//pastas
			File n = new File(nome);
			if(n.isDirectory()){
				ladoDireito.removeAll();
				setButtons();
				up.setVisible(true);
				down.setVisible(true);
				validate();
				repaint();
			}

		}
	}

	private void setButtons(){
		up.setVisible(false);
		down.setVisible(false);
		color.setVisible(false);
		play.setVisible(false);
		stop.setVisible(false);
	}
}
}
[java]

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.