Hi,
ich bin momentan dabei einen Installer in Java zu programmieren, allerdings komme ich jetzt gerade nicht mehr weiter.
Bisher habe ich schon dies programmiert (Ich verwende übrigens Java 8):
Nun stehe ich aber vor dem Problem, dass ich bei
ein Fehler erhalte und zudem weiß ich auch nicht wie ich dass jetzt mit der ProgressBar hinbekomme und wie ich die Dateien, die ich gerne in die .jar hineinpacken möchte von A nach B kopiere (also aus der Installer.jar raus in den Mods-Folder von Minecraft der erstellt werden soll wenn dieser nicht vorhanden ist).
Zudem wäre vielleicht eine Anzeige mit der Zeit die noch verbleicht und wie viel GB/MB schon rüberkopiert worden sind von der gesammten Dateigröße aller Dateien hilfreich.
Ich hoffe ihr könnt mir hierbei helfen und hoffentlich schaffe ich es diesmal. (ich hatte im Laufe der Zeit schon mehrmals die selbe Frage, bin bisher immer am selben Punkt gescheitert: SwingWorkers ... nun ja, die SwingWorkers sind auch der Grund warum ich momentan C++ lerne, nur leider bin ich noch nicht soweit um den Installer in C++ zu programmieren [Witzigerweise sind die SwingWorker der einzige Grund warum ich C++ lerne xD, hoffe ja mal dass es in C++ leichter sein wird])
JavaGamer
ich bin momentan dabei einen Installer in Java zu programmieren, allerdings komme ich jetzt gerade nicht mehr weiter.
Bisher habe ich schon dies programmiert (Ich verwende übrigens Java 8):
Java:
import java.io.File;
import java.util.Locale;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
public class Installer
{
private static JFrame frame;
public static JProgressBar progressBar;
public static void main(String[] args)
{
frame = new JFrame("ModPack - Installer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
progressBar = new JProgressBar(0, 100);
progressBar.setBounds(40, 60, 300, 30);
progressBar.setValue(0);
frame.add(progressBar);
frame.setVisible(true);
Task task = new Task();
task.execute();
}
private static File getPath()
{
String userHomeDir = System.getProperty("user.home", ".");
String osType = System.getProperty("os.name").toLowerCase(Locale.ENGLISH);
File targetDir = null;
String mcDir = ".minecraft\\mods";
if(osType.contains("win") && System.getenv("APPDATA") != null)
targetDir = new File(System.getenv("APPDATA"), mcDir);
else if(osType.contains("mac"))
targetDir = new File(new File(new File(userHomeDir, "Library"),"Application Support"),"minecraft");
else
targetDir = new File(userHomeDir, mcDir);
if(!targetDir.exists() || !targetDir.isDirectory() || !targetDir.canWrite())
targetDir.mkdir();
return targetDir;
}
class Task extends SwingWorker<Void, Void>
{
@Override
public Void doInBackground()
{
setProgress(0);
// Copy Files
return null;
}
@Override
public void done()
{
System.exit(0);
}
}
}
Nun stehe ich aber vor dem Problem, dass ich bei
Java:
Task task = new Task();
Zudem wäre vielleicht eine Anzeige mit der Zeit die noch verbleicht und wie viel GB/MB schon rüberkopiert worden sind von der gesammten Dateigröße aller Dateien hilfreich.
Ich hoffe ihr könnt mir hierbei helfen und hoffentlich schaffe ich es diesmal. (ich hatte im Laufe der Zeit schon mehrmals die selbe Frage, bin bisher immer am selben Punkt gescheitert: SwingWorkers ... nun ja, die SwingWorkers sind auch der Grund warum ich momentan C++ lerne, nur leider bin ich noch nicht soweit um den Installer in C++ zu programmieren [Witzigerweise sind die SwingWorker der einzige Grund warum ich C++ lerne xD, hoffe ja mal dass es in C++ leichter sein wird])
JavaGamer
Zuletzt bearbeitet von einem Moderator: