Hallo,
ich bin gerade mitten im "Neueinstieg" für Java. Ich soll für einen Bekannten ein Java Applet zum FTP Upload schreiben.
Der Upload selber funktioniert einwandfrei - leider aber nicht die Anzeige der jProgressBar. Ich habe bereits einiges probiert, aber irgendwie funktioniert die Anzeige nicht korrekt. Da ich leider ein totaler Anfänger in Java bin, bekomme ich es trotz verschiedener Beispiele (Threads die ich hier im Forum gefunden habe) nicht hin.
Es würde mich freuen wenn sich einer kurz Zeit nimmt und mir meinen Fehler erklärt (bzw. eine Lösung parat hat)
Gruß und DANKE
Martin
Mein Code sieht wie folgt aus (hauptrolle spielt wohl die Void: btUploadActionPerformed):
ich bin gerade mitten im "Neueinstieg" für Java. Ich soll für einen Bekannten ein Java Applet zum FTP Upload schreiben.
Der Upload selber funktioniert einwandfrei - leider aber nicht die Anzeige der jProgressBar. Ich habe bereits einiges probiert, aber irgendwie funktioniert die Anzeige nicht korrekt. Da ich leider ein totaler Anfänger in Java bin, bekomme ich es trotz verschiedener Beispiele (Threads die ich hier im Forum gefunden habe) nicht hin.
Es würde mich freuen wenn sich einer kurz Zeit nimmt und mir meinen Fehler erklärt (bzw. eine Lösung parat hat)
Gruß und DANKE
Martin
Mein Code sieht wie folgt aus (hauptrolle spielt wohl die Void: btUploadActionPerformed):
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ClassFTP_Upload.java
*
* Created on 20.01.2009, 16:41:06
*/
package javaftp_upload;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.io.InputStream;
import java.util.StringTokenizer;
import java.io.IOException;
import java.net.SocketException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ProgressMonitorInputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import javax.swing.SwingUtilities;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.io.IOException;
//
public class ClassFTP_Upload extends javax.swing.JApplet {
FTPClient client;
// public static int BUFFER_SIZE = 102400000;
/** Initializes the applet ClassFTP_Upload */
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
DateiAuswahl = new javax.swing.JFileChooser();
lblStatus = new javax.swing.JLabel();
btUpload = new javax.swing.JButton();
btDateiAuswahl = new javax.swing.JButton();
lblDateiAuswahl = new javax.swing.JLabel();
jProgressBar1 = new javax.swing.JProgressBar();
lblStatus.setText("jLabel1");
btUpload.setText("jButton1");
btUpload.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btUploadActionPerformed(evt);
}
});
btDateiAuswahl.setText("jButton2");
btDateiAuswahl.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btDateiAuswahlActionPerformed(evt);
}
});
lblDateiAuswahl.setText("jLabel2");
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.addContainerGap(26, Short.MAX_VALUE)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
.add(org.jdesktop.layout.GroupLayout.LEADING, jProgressBar1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(lblStatus, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 248, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(lblDateiAuswahl))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(btDateiAuswahl)
.add(btUpload))))
.add(47, 47, 47))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(39, 39, 39)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(btDateiAuswahl)
.add(lblDateiAuswahl))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(btUpload)
.add(lblStatus, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 23, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(31, 31, 31)
.add(jProgressBar1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addContainerGap(162, Short.MAX_VALUE))
);
lblStatus.getAccessibleContext().setAccessibleName("lblStatus");
}// </editor-fold>
private void btUploadActionPerformed(java.awt.event.ActionEvent evt) {
File Datei;
int DateiSize;
InputStream DateiInputStream;
OutputStream DateiOutputStream;
jProgressBar1.setMinimum(0);
__main: try {
// TODO add your handling code here:
client = new FTPClient();
client.connect("ftp.meinedomain.de");
lblStatus.setText("Connected");
if (!client.login("loginname, "passwort")) {
client.logout();
lblStatus.setText("Abbruch");
break __main;
}
lblStatus.setText("Login erfolgreich");
client.enterLocalPassiveMode();
client.setFileType(FTP.ASCII_FILE_TYPE);
lblStatus.setText("Login zu 100%");
Datei = new File(lblDateiAuswahl.getText());
DateiSize = (int) Datei.length();
setProgressMaximum(DateiSize);
DateiInputStream = new FileInputStream(lblDateiAuswahl.getText());
DateiOutputStream = client.storeFileStream("test123.dat");
int counter = 0;
byte[] buffer = new byte[1024];
while(true){
int bytes = DateiInputStream.read(buffer);
if (bytes < 0)
break;
DateiOutputStream.write(buffer, 0, bytes);
counter += bytes;
setProgressValue(counter);
int proc = (int) Math.round(jProgressBar1.getPercentComplete() * 100);
setProgressString(proc + "%");
jProgressBar1.repaint();
}
DateiOutputStream.close();
DateiInputStream.close();
} catch (SocketException ex) {
Logger.getLogger(ClassFTP_Upload.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ClassFTP_Upload.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btDateiAuswahlActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
DateiAuswahl.setCurrentDirectory(new File("."));
int result = DateiAuswahl.showOpenDialog(this);
lblDateiAuswahl.setText(DateiAuswahl.getSelectedFile().getAbsolutePath());
}
protected void setProgressMaximum(final int value) {
Runnable runner = new Runnable() {
public void run() {
jProgressBar1.setMaximum(value);
}
};
SwingUtilities.invokeLater(runner);
}
protected void setProgressValue(final int value) {
Runnable runner = new Runnable() {
public void run() {
jProgressBar1.setValue(value);
}
};
SwingUtilities.invokeLater(runner);
}
protected void setProgressString(final String string) {
Runnable runner = new Runnable() {
public void run() {
jProgressBar1.setString(string);
}
};
SwingUtilities.invokeLater(runner);
}
// Variables declaration - do not modify
private javax.swing.JFileChooser DateiAuswahl;
private javax.swing.JButton btDateiAuswahl;
private javax.swing.JButton btUpload;
private javax.swing.JProgressBar jProgressBar1;
private javax.swing.JLabel lblDateiAuswahl;
private javax.swing.JLabel lblStatus;
// End of variables declaration
}