Olá pessoal, o q ocorre com o programa de estou desenvolvendo é o seguinte: tenho uma classe chamada: Atual, e nesta classe o metodo AnalyzePath ( ), o mesmo utiliza-se do JFileChooser(metodo getFile()), para chamar a janela para selecionarmos o diretório onde estão os arquivos. Até ai tudo bem, funciona perfeitamente, inclusive através do getPath() eu escrevo o caminho no JTextField(Cam), adiciono os arquivos do diretório em um vector e exibo em uma lista. TUDO OK.
O PROBLEMA: quando instancio a classe Atual o metodo AnalyzePath pela classe Settings, ele até abre a janela para escolha do diretório, eu seleciono e através do método PathProf(String path), recebo o caminho, do diretório e até imprimo, o que acontece e que não consigo escrever na no JTextFileld o caminho. Por favor me ajudem.//Settings//
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class Settings extends JFrame implements ActionListener{
JPanel contentPane;
JLabel jLabelPath = new JLabel ();
JTextField jTextPath = new JTextField();
JButton jButtonPath = new JButton();
JTextArea jTextArea = new JTextArea();
Atual IO = new Atual();
public Settings() {
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(550, 350));
setTitle("Teacher Analyst - Propriedades");
setResizable(false);
jTextArea.setFont(new Font ("Tahoma", Font.BOLD, 15));
jTextArea.setText("\n"+" "+"Propriedades do Sistema");
jTextArea.setBounds(0, 0, 550, 69);
jTextArea.setEditable(false);
jLabelPath.setText("Path para Curriculos de Professores:");
jButtonPath.setText("Alterar");
jTextPath.setEnabled(false);
jLabelPath.setBounds(50, 70, 200, 20);
jTextPath.setBounds(50, 90, 350, 20);
jButtonPath.setBounds(405, 90, 90, 20);
contentPane.add(jLabelPath);
contentPane.add(jButtonPath);
contentPane.add(jTextPath);
contentPane.add(jTextArea);
jButtonPath.addActionListener(this);
}
public void PathProf (String path) {
System.out.print(path);
jTextPath.setText(path);
}
public void actionPerformed ( ActionEvent e ) {
if ( e.getSource() == jButtonPath ) {
IO.analyzePath();
}
}
}
//Atual//
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.io.File;
import java.util.*;
public class Atual extends JFrame implements ActionListener {
JPanel contentPane;
JButton Pass1 = new JButton();
JButton Pass2 = new JButton();
JButton Pass3 = new JButton();
JButton Pass4 = new JButton();
JButton Atualist = new JButton();
JButton Proc = new JButton();
JButton AtualProf = new JButton();
JLabel End = new JLabel ();
JTextField Cam = new JTextField();
JList lista1 = new JList();
JList lista2 = new JList();
JScrollPane JanA = new JScrollPane(lista1);
JScrollPane JanB = new JScrollPane(lista2);
Vector<Object> l1 = new Vector<Object>();
Vector<Object> l2 = new Vector<Object>();
public Atual() {
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(598, 400));
setResizable(false);
setTitle("Teacher Analyst - Inclusão/Atualização");
lista1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// texto
Pass1.setText(">");
Pass2.setText("<");
Pass3.setText(">>");
Pass4.setText("<<");
End.setText("Path:");
Proc.setText("Procurar");
AtualProf.setText("Atualizar Professor");
Atualist.setText("Atualizar Lista");
// tamanho
Pass1.setBounds(270, 120, 50, 30);
Pass2.setBounds(270, 160, 50, 30);
Pass3.setBounds(270, 200, 50, 30);
Pass4.setBounds(270, 240, 50, 30);
End.setBounds(20, 20, 80, 20);
Cam.setBounds(50, 20, 425, 20);
Cam.setEnabled(false);
Proc.setBounds(480, 17, 90, 25);
AtualProf.setBounds(385, 340, 150, 20);
AtualProf.setBackground(Color.ORANGE);
Atualist.setBounds(75, 340, 120, 20);
JanA.setBounds(10, 80, 240, 250);
JanB.setBounds(340, 80, 240, 250);
lista1.setBounds(10, 80, 240, 250);
lista1.setFixedCellHeight( 15 );
lista1.setFixedCellWidth(100);
lista2.setBounds(340, 80, 240, 250);
lista2.setFixedCellHeight( 15 );
lista2.setFixedCellWidth(100);
// adicionando ao frame
contentPane.add(Pass1);
contentPane.add(Pass2);
contentPane.add(Pass3);
contentPane.add(Pass4);
contentPane.add(End);
contentPane.add(Cam);
contentPane.add(Proc);
contentPane.add(AtualProf);
contentPane.add(Atualist);
contentPane.add(JanA);
contentPane.add(JanB);
// Definindo ActionListener
Proc.addActionListener(this);
Atualist.addActionListener(this);
Pass1.addActionListener(this);
Pass2.addActionListener(this);
Pass3.addActionListener(this);
Pass4.addActionListener(this);
}
public File getFile () {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = fileChooser.showOpenDialog(this);
File fileName = fileChooser.getSelectedFile();
return fileName;
}
public void analyzePath ( ) {
File name = getFile();
if ( name.exists() && name.isDirectory() == false) { // se o nome existir, dá saída das informações sobre ele
JOptionPane.showMessageDialog(this, "O caminho indica um arquivo, não um diretório\nLocalize um caminho válido!",
"ERRO", JOptionPane.ERROR_MESSAGE);
analyzePath();
}// fim o if externo
if ( name.isDirectory() ) { // listagem do diretório de saída
String directory[] = name.list();
Settings settings = new Settings();
settings.PathProf( name.getPath() );
l1.clear();
for ( String directoryName : directory ) {
if (directoryName.toLowerCase().endsWith(".xml")) {
l1.addElement(directoryName);
Cam.setText( name.getPath() );
}
}
if (l1.isEmpty()) {
JOptionPane.showMessageDialog(this, "Não foi localizado neste diretório nenhum arquivo XML\nLocalize um que contenha arquivos XML", "ERRO",
JOptionPane.ERROR_MESSAGE);
analyzePath();
}
}// fim if
if (name.exists() == false && name.isDirectory() == false){ // se não for arquivo ou diretório, mensagem de erro
JOptionPane.showMessageDialog( this, name + " Diretório não existe! ", "ERRO", JOptionPane.ERROR_MESSAGE );
}// fim if
lista1.setListData(l1);
}
public void analyzePathValid ( String path ) {
File name = new File ( path );
if ( name.exists() && name.isDirectory() == false) { // se o nome existir, dá saída das informações sobre ele
JOptionPane.showMessageDialog(this, "O caminho indica um arquivo, não um diretório\nDigite um caminho válido!",
"ERRO", JOptionPane.ERROR_MESSAGE);
analyzePath();
}// fim o if externo
if ( name.isDirectory() ) { // listagem do diretório de saída
String directory[] = name.list();
l1.clear();
for ( String directoryName : directory ){
if (directoryName.toLowerCase().endsWith(".xml")) {
l1.addElement(directoryName);
}
}
}// fim if
if (name.exists() == false && name.isDirectory() == false){ // se não for arquivo ou diretório, mensagem de erro
JOptionPane.showMessageDialog( this, name + " Diretório não existe! ", "ERRO", JOptionPane.ERROR_MESSAGE );
}// fim if
lista1.setListData(l1);
}
public void actionPerformed ( ActionEvent e ) {// escuta o evento do clique no botão
if (e.getSource() == Proc) { // botão Pesquisa
analyzePath();// chama analyzePath()
}
if (e.getSource() == Atualist){ // botão Atualizar lista1
analyzePathValid( Cam.getText() );// chama analyzePathValid
}
if (e.getSource() == Pass1) {
Object[] temp = lista1.getSelectedValues();
for ( int i = 0; i < temp.length; i++){
l2.addElement(temp[i]);
l1.removeElement(temp[i]);
Atualist.setEnabled(false);
Proc.setEnabled(false);
}
lista1.setListData(l1);
lista2.setListData(l2);
}
if (e.getSource() == Pass2) {
Object[] temp = lista2.getSelectedValues();
for ( int i = 0; i < temp.length; i++){
l1.addElement(temp[i]);
l2.removeElement(temp[i]);
}
lista1.setListData(l1);
lista2.setListData(l2);
if(lista2.getModel().getSize() == 0){
Atualist.setEnabled(true);
Proc.setEnabled(true);
}
}
if (e.getSource() == Pass3 ){
l2.addAll(l1);
l1.clear();
lista1.setListData(l1);
lista2.setListData(l2);
Atualist.setEnabled(false);
Proc.setEnabled(false);
}
if (e.getSource() == Pass4 ){
l1.addAll(l2);
l2.clear();
lista1.setListData(l1);
lista2.setListData(l2);
Atualist.setEnabled(true);
Proc.setEnabled(true);
}
}