Hey, einige von euch benutzen sowas sicherlich schon, aber für diejenigen, die es nützlich finden und sowas
noch nicht haben:
Ich hab grad ne kleine Klasse geschrieben, die in einem Package eine vorgefertigte, ausführbare Java-Datei
erstellt, die eigentlich die Grundlagen hat für jede Klasse, die man als Beispiel zur Hilfe für jemanden posten
möchte.
Genau genommen sieht die Klasse so aus:
Beim Ausführen des Programms erstellt er halt immer ne neue Datei, nummeriert sie also durch und
überschreibt nix. Leider hab ichs nicht ganz mit relativen Pfaden hinbekommen, d.h. ihr müsstet
in Zeile 12 (ggffls auch 15 wenn ihr wollt) das für euch anpassen
Genug gelabert, also wer's brauchen kann:
noch nicht haben:
Ich hab grad ne kleine Klasse geschrieben, die in einem Package eine vorgefertigte, ausführbare Java-Datei
erstellt, die eigentlich die Grundlagen hat für jede Klasse, die man als Beispiel zur Hilfe für jemanden posten
möchte.
Genau genommen sieht die Klasse so aus:
Code:
// This class has been auto-generated by _CREATE_EXAMPLE.java
import javax.swing.JFrame;
public class ExampleFrame_0 extends JFrame {
public static void main(String[] args) {
new ExampleFrame_0().setVisible(true);
}
public ExampleFrame_0(){
super("ExampleFrame_0");
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
}
}
Beim Ausführen des Programms erstellt er halt immer ne neue Datei, nummeriert sie also durch und
überschreibt nix. Leider hab ichs nicht ganz mit relativen Pfaden hinbekommen, d.h. ihr müsstet
in Zeile 12 (ggffls auch 15 wenn ihr wollt) das für euch anpassen
Genug gelabert, also wer's brauchen kann:
Code:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Creates a JFrame with usual settings as a java class file within the examples
* package
*/
public class _CREATE_EXAMPLE {
// this is where all generated files are put:
private static final String dir = "C:/Dokumente und Einstellungen/thomas/workspace/examples/src";
// this is how the generated files should be named (will be numbered
// automatically):
private static final String name = "ExampleFrame";
public static void main(String[] args) {
// get example count
int exampleCount = 0;
File examplesDir = new File(dir);
File[] files = examplesDir.listFiles();
for (int e = 0; e < files.length; e++) {
String fullPath = files[e].getAbsolutePath();
if (fullPath.contains(name)) {
exampleCount++;
}
}
// prepare next example file
String className = name + "_" + exampleCount;
File exampleClass = new File(dir + "/" + className + ".java");
try {
// create the file
exampleClass.createNewFile();
// generate code
String nfo = "// This class has been generated by _CREATE_EXAMPLE.java";
String imports = "import javax.swing.JFrame;";
String openClass = "public class " + className
+ " extends JFrame {";
String main = "\tpublic static void main(String[] args) {"
+ newLines(1) + tabs(2) + "new " + className
+ "().setVisible(true);" + newLines(1) + tabs(1) + "}";
String constructor = tabs(1) + "public " + className + "(){"
+ newLines(1) + tabs(2) + "super(\"" + className + "\");"
+ newLines(1) + tabs(2)
+ "setDefaultCloseOperation(EXIT_ON_CLOSE);" + newLines(1)
+ newLines(3) + tabs(2) + "pack();" + newLines(1) + tabs(2)
+ "setLocationRelativeTo(null);" + newLines(1) + tabs(1)
+ "}";
String closeClass = "}";
// code as single String:
String totalCode = nfo + newLines(2) + imports + newLines(2)
+ openClass + newLines(2) + main + newLines(2)
+ constructor + newLines(1) + closeClass;
// write code into file
FileOutputStream write = new FileOutputStream(exampleClass);
for (int i = 0; i < totalCode.length(); i++) {
write.write((byte) totalCode.charAt(i));
}
// done
System.out.println("Created " + className);
} catch (IOException e) {
System.err.println("ERROR: Could not create " + className);
}
}
private static String newLines(int count) {
String newLines = "";
while (count > 0) {
newLines = newLines + "\n";
count--;
}
return newLines;
}
private static String tabs(int count) {
String tabs = "";
while (count > 0) {
tabs = tabs + "\t";
count--;
}
return tabs;
}
}