Ajuda com JFileChooser

3 respostas
A

Ae pessoal é o seguinte.
To fazendo uma aplicaçãozinha bem básica. Tenho que ler de um arquivo TXT alguns dados (nºs).

Fiz a interface gráfica, meio porquinha mas fiz, soh que estou com um problema. Não estou conseguindo fazer a bendita janelinha de "Open" para escolher qual arquivo TXT quero ler.

nunca fiz essa janela e jah procurei alguns exemplos mas não entendi muito bem e não consegui fazer.

abaixo eu anexo a minha "GUI", se alguem puder me ajudar...

Obrigado pela ajuda!!!

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.ObjectInputStream;

public class Principal extends JFrame implements ActionListener{

	private JMenuItem miSair, miAbrir;
	private JTextField tfCapJ1, tfCapJ2, tfCapJ3, tfLtsIJ1, tfLtsIJ2, tfLtsIJ3, tfLtsFJ1, tfLtsFJ2, tfLtsFJ3, tfMovimentos;
	private JLabel lCapacidade, lLitrosInicial, lLitrosFinal, lJarro1, lJarro2, lJarro3, lMovimentos, lBranco;
	private File arquivo;
	private ObjectInputStream entrada;
	
	public Principal(){
		super("Jarros: Algoritmos C");
	}
	public JPanel painelPrincipal(){
		JPanel princ = new JPanel();
		princ.setLayout(new BorderLayout());
		princ.setBackground(Color.BLACK);
		princ.add(formMenus(), BorderLayout.NORTH);
		princ.add(formCampos(), BorderLayout.CENTER);
		
		return princ;
	}
	
	public JPanel formCampos(){
		JPanel campos = new JPanel();
		campos.setLayout(new GridLayout(5,4));
		tfCapJ1 = new JTextField(4);
		tfCapJ2 = new JTextField(4);
		tfCapJ3 = new JTextField(4);
		tfLtsIJ1 = new JTextField(4);
		tfLtsIJ2 = new JTextField(4);
		tfLtsIJ3 = new JTextField(4);
		tfLtsFJ1 = new JTextField(4);
		tfLtsFJ2 = new JTextField(4);
		tfLtsFJ3 = new JTextField(4);
		tfMovimentos = new JTextField(4);
		tfCapJ1.setEditable(false);
		tfCapJ2.setEditable(false);
		tfCapJ3.setEditable(false);
		tfLtsIJ1.setEditable(false);
		tfLtsIJ2.setEditable(false);
		tfLtsIJ3.setEditable(false);
		tfLtsFJ1.setEditable(false);
		tfLtsFJ2.setEditable(false);
		tfLtsFJ3.setEditable(false);
		tfMovimentos.setEditable(false);
		lCapacidade = new JLabel("Capacidade");
		lLitrosInicial = new JLabel("Lts Iniciais");
		lLitrosFinal = new JLabel("Lts Finais");
		lJarro1 = new JLabel("Jarro 1");
		lJarro2 = new JLabel("Jarro 2");
		lJarro3 = new JLabel("Jarro 3");
		lMovimentos = new JLabel("Movimentos");
		lBranco = new JLabel(" ");
				
		campos.add(lBranco);
		campos.add(lCapacidade);
		campos.add(lLitrosInicial);
		campos.add(lLitrosFinal);
		campos.add(lJarro1);
		campos.add(tfCapJ1);
		campos.add(tfLtsIJ1);
		campos.add(tfLtsFJ1);
		campos.add(lJarro2);
		campos.add(tfCapJ2);
		campos.add(tfLtsIJ2);
		campos.add(tfLtsFJ2);
		campos.add(lJarro3);
		campos.add(tfCapJ3);
		campos.add(tfLtsIJ3);
		campos.add(tfLtsFJ3);
		campos.add(lMovimentos);
		campos.add(tfMovimentos);				
				
		return campos;
	}
	
	public JMenu formArquivo(){
		JMenu arquivo = new JMenu("Arquivo");
		miSair = new JMenuItem("Sair");
		miSair.addActionListener(this);
		miAbrir = new JMenuItem("Abrir...");
		miAbrir.addActionListener(this);
		
		arquivo.add(miAbrir);
		arquivo.add(miSair);
		
		return arquivo;
	}
	
	public JMenuBar formMenus(){
		JMenuBar menus = new JMenuBar();
		menus.setLayout(new FlowLayout(FlowLayout.LEFT));
		menus.add(formArquivo());
	        
		return menus;
	}
	 
	public void actionPerformed(ActionEvent e){
		if (e.getSource() == miSair)
	      System.exit(0);
	    if (e.getSource() == miAbrir){
	          //AbrirArquivo aa = new AbrirArquivo(entrada, arquivo);
	    }	      
	}
	
	public void janelaPrincipal(){  
		
	    Container c = getContentPane();
	    c.setBackground(Color.BLACK);
	    c.add(painelPrincipal());
	    setSize(400,160);
	    setVisible(true);
	}
	
	public static void main(String args[]) {
	      Principal jp = new Principal();
	      jp.janelaPrincipal();
	  }

}

3 Respostas

Rostery
import javax.swing.*;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.File;
import java.io.ObjectInputStream;
 
 public class Principal extends JFrame implements ActionListener{
 
 	private JMenuItem miSair, miAbrir;
 	private JTextField tfCapJ1, tfCapJ2, tfCapJ3, tfLtsIJ1, tfLtsIJ2, tfLtsIJ3, tfLtsFJ1, tfLtsFJ2, tfLtsFJ3, tfMovimentos;
 	private JLabel lCapacidade, lLitrosInicial, lLitrosFinal, lJarro1, lJarro2, lJarro3, lMovimentos, lBranco;
 	private File arquivo;
 	private ObjectInputStream entrada;
 	private FileDialog fd = new FileDialog(this, "Selecione a Imagem: ");
 	
 	public Principal(){
 		super("Jarros: Algoritmos C");
 	}
 	public JPanel painelPrincipal(){
 		JPanel princ = new JPanel();
 		princ.setLayout(new BorderLayout());
 		princ.setBackground(Color.BLACK);
 		princ.add(formMenus(), BorderLayout.NORTH);
 		princ.add(formCampos(), BorderLayout.CENTER);
 		
 		return princ;
 	}
 	
 	public JPanel formCampos(){
 		JPanel campos = new JPanel();
 		campos.setLayout(new GridLayout(5,4));
 		tfCapJ1 = new JTextField(4);
 		tfCapJ2 = new JTextField(4);
 		tfCapJ3 = new JTextField(4);
 		tfLtsIJ1 = new JTextField(4);
 		tfLtsIJ2 = new JTextField(4);
 		tfLtsIJ3 = new JTextField(4);
 		tfLtsFJ1 = new JTextField(4);
 		tfLtsFJ2 = new JTextField(4);
 		tfLtsFJ3 = new JTextField(4);
 		tfMovimentos = new JTextField(4);
 		tfCapJ1.setEditable(false);
 		tfCapJ2.setEditable(false);
 		tfCapJ3.setEditable(false);
 		tfLtsIJ1.setEditable(false);
 		tfLtsIJ2.setEditable(false);
 		tfLtsIJ3.setEditable(false);
 		tfLtsFJ1.setEditable(false);
 		tfLtsFJ2.setEditable(false);
 		tfLtsFJ3.setEditable(false);
 		tfMovimentos.setEditable(false);
 		lCapacidade = new JLabel("Capacidade");
 		lLitrosInicial = new JLabel("Lts Iniciais");
 		lLitrosFinal = new JLabel("Lts Finais");
 		lJarro1 = new JLabel("Jarro 1");
 		lJarro2 = new JLabel("Jarro 2");
 		lJarro3 = new JLabel("Jarro 3");
 		lMovimentos = new JLabel("Movimentos");
 		lBranco = new JLabel(" ");
 				
 		campos.add(lBranco);
 		campos.add(lCapacidade);
 		campos.add(lLitrosInicial);
 		campos.add(lLitrosFinal);
 		campos.add(lJarro1);
 		campos.add(tfCapJ1);
 		campos.add(tfLtsIJ1);
 		campos.add(tfLtsFJ1);
 		campos.add(lJarro2);
 		campos.add(tfCapJ2);
 		campos.add(tfLtsIJ2);
 		campos.add(tfLtsFJ2);
 		campos.add(lJarro3);
 		campos.add(tfCapJ3);
 		campos.add(tfLtsIJ3);
 		campos.add(tfLtsFJ3);
 		campos.add(lMovimentos);
 		campos.add(tfMovimentos);				
 				
 		return campos;
 	}
 	
 	public JMenu formArquivo(){
 		JMenu arquivo = new JMenu("Arquivo");
 		miSair = new JMenuItem("Sair");
 		miSair.addActionListener(this);
 		miAbrir = new JMenuItem("Abrir...");
 		miAbrir.addActionListener(this);
 		
 		arquivo.add(miAbrir);
 		arquivo.add(miSair);
 		
 		return arquivo;
 	}
 	
 	public JMenuBar formMenus(){
 		JMenuBar menus = new JMenuBar();
 		menus.setLayout(new FlowLayout(FlowLayout.LEFT));
 		menus.add(formArquivo());
 	        
 		return menus;
 	}
 	 
 	public void actionPerformed(ActionEvent e){
 		if (e.getSource() == miSair)
 	      System.exit(0);
 	    if (e.getSource() == miAbrir){
 	    	fd.show();   
 	    }	      
 	}
 	
 	public void janelaPrincipal(){  
 		
 	    Container c = getContentPane();
 	    c.setBackground(Color.BLACK);
 	    c.add(painelPrincipal());
 	    setSize(400,160);
 	    setVisible(true);
 	}
 	
 	public static void main(String args[]) {
 	      Principal jp = new Principal();
 	      jp.janelaPrincipal();
 	  }
 
 }

Eae Blz??
Aí eu vi seu código aki!!
Eu criei um FiLeDialog pra ele tá??
Agora num sei onde é que vc vai enfia esse arquivo txt aí...hehe...mas com o fd que eu coloquei aí, já da pelo menos pra vc buscar o TXT!!!!

Blz???
ve aí si ajuda blz...
qlquer coisa tamo aE!!!!

FlW
Boa Sorte!
:D

Luiz-SP

Então, no exemplo abaixo eu usei o FileChooser em outro Frame, sugestão:

  • Fazer seu JFrame um listener tb, separe, cada objeto deve fazer algo simples.
if (e.getActionCommand().equals("ApproveSelection")){
               //Aqui eu peguei o file     
                File file = this.openframe.getFileChooser().getSelectedFile(); 
                this.openframe.setVisible(false);
                this.openframe.dispose();
                this.openframe = null;
 
        } else if (e.getActionCommand().equals("CancelSelection")){
                this.openframe.setVisible(false);
                this.openframe.dispose();
                this.openframe = null;
               
        }
A

Pois é, na primeira opção como que eu vou pegar o arquivo?? :slight_smile: mas vlw a ajuda velho…

na segunda eu não entendi muito, não sei muito como usar…

pelo que sei tem q ser com JFileChooser pra mim conseguir “pegar” o arquivo, pois dps tenho q jogar dentro de um fluxo de entrada, pois o arquivo que estou lendo é mais ou menos assim…
40 20 15
15 12 14
05 04 08

ou seja, 1ª linha é a capacidade dos vazos, 2ª é qta agua tem e 3ª é qta agua tem q ficar cada vazo…

como sou muito leigo ainda em gui não to conseguindo de jeito nenhum fazer isso, e pior q tem q fazer com essa janela pois eu vou ter q ler 10 arquivos…se fosse 1 nem precisava :slight_smile:

obrigado pela ajuda

se alguem quiser contribuir com mais alguma coisa pra ver se eu entendo, agradeço muito

abraços

Criado 29 de agosto de 2006
Ultima resposta 29 de ago. de 2006
Respostas 3
Participantes 3