externen code ausführen

Java-Freak

Bekanntes Mitglied
Hallo
ich hab mal ne frage:
wie kann ich denn einen code, der von irgent einer quelle kommt an einer bestimmten stelle in meinem programm ausführen ?
ich poste mal meinen code:
Java:
import java.awt.*;
import javax.swing.*;
public class Eos extends JPanel  {
	public int X(int wert) {
		int erg = (getSize().width/2)+wert;
		return erg;
	}
	public int Y(int wert) {
		int erg = (getSize().height/2)-wert;
		return erg;
	}
	public void drawAxes(Graphics g){
		g.drawLine(0,getSize().height/2,getSize().width,getSize().height/2);
		g.drawLine(getSize().width/2,0,getSize().width/2,getSize().height);
    	System.out.println(this.getSize());
	}
	public void paint(Graphics g) {
    	super.paint(g);
    	this.setBackground(Color.white);
    	drawAxes(g);
    	g.drawLine(X(0),Y(0), X(20), Y(20));
//hier will ich den code ausführen
    }
	public static void main(String[] args) {
    JFrame frame = new JFrame("bal bla");
    frame.getContentPane().add(new Eos());
    frame.setSize(200,300);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setVisible(true);
	}
}
dieser code macht bisher nur ein fenster mit x und y achse. der benutzer soll jetzt mit einem anden programm(nem einfachen editor ich poste etz mal nicht) java code schrieben den ich dan mithilfe dieses programmes ausführen möchte. im endefekt will ich also ein zeichenprogramm schreiben, das der benutzer mit java füttert, welches ausgeführt wird.
Danke im Voraus!!
 

mabuhay

Bekanntes Mitglied
Hallo

Also da brauchst du ja sicher mal einen Compiler um den geschriebenen Java-Code umzuwandeln.

Also verstehe ich das richtig: Du willst ein Zeichenprogramm schreiben, in welchem man durch Programmierung in Java zeichnen kann?

Du könntest ja auch eine Art Interpreter schreiben, mit einem Textfile zum Beispiel:
Kreis mir durchmesser und x-y koordinaten: k 2 0 0
Linie von x1y1 nach x2y2: l 1 1 5 5
...oder so ähnlich

mfg
 

Java-Freak

Bekanntes Mitglied
ja, im endefekt schon. nur durch diese klasse will ich erreichen das man nicht immer das ganze ausenrum schreiben muss sondern z.b. nur nen befehl zum Linie zeichnen
das mim interpreter ist schon nicht schlecht aber ich will den code nicht abspeichern sondern während der laufzeit in das programm einfügen.
normalerweise hat man ja ein festes programm das kompiliert wird und dann ausgeführt
ich will jatzt aber das der benutzen z. b. eingibt g.drawLine(X(0),Y(0), X(20), Y(20));und das wird dan so wie es ist augeführt.
das programm wird also praktisch während der laufzeit verändert und da bin ich mir nicht sicher ob das geht.
an der markierten stelle steht dann z. b. führeAus(eingabeBenutzer); und wenn der benutzer z.b.
g.drawLine(X(0),Y(0), X(20), Y(20));
g.drawLine(X(0),Y(0), X(10), Y(10));
wird es ausgefürt als ob es dort im programm stände
ich hoffe ihr versteht was ich meine;)
danke auf jeden fall schon mal!!
 

Java-Freak

Bekanntes Mitglied
das problem ist dann natürlich das wenn der benutzer anderen java code wie z.b. System.out.println("bla"); eingibt, das das dann auch ausgeführt wird...
da wäre der interpreter schon besser
auch wenn der benutzer einen fehler in seinen eingegebenen code macht, dass nicht gleich das ganze System abstürzt...
der interpreter wäre warscheinlich das sicherste aber ich muss halt jeden grafik befehl definieren...
 

Java-Freak

Bekanntes Mitglied
so, hab etz mal nen interpreteransatz gemacht aber bin schon wieder auf die nase geflogen...
Codes:
Editor.java:
Java:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.StringTokenizer;
import javax.swing.*;

public class Editor {
	public static String next(JTextArea jta){
		System.out.println(jta.getText());
		return jta.getText();
	}
	public static void main(String[] args) {
		JFrame frame = new JFrame("Eos - Java Edition");
	    //frame.getContentPane().add(new DrawingBoard());
	    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	    frame.setVisible(true);
	    frame.setLayout(new BorderLayout(1,0));
	    final JTextArea ta = new JTextArea();
	    JButton b = new JButton("Ausführen");
	    frame.add( b , BorderLayout.PAGE_END); 
	    frame.add(ta ); 
	    b.addMouseListener( new MouseAdapter() { 
		      public void mouseClicked( MouseEvent e ) { 
		    	  JFrame frame = new JFrame("Eos - Java Edition - Drawing Board");
		    	  DrawingBoard board = new DrawingBoard();
		    	  frame.getContentPane().add(board);
		    	  frame.setSize(400,300);
		    	  frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
		    	  frame.setVisible(true);
		    	  //board.draw(next(ta),hier hab ich keine ahnung was ich etz amchn könnte );
		      } 
		    } );    
	    frame.pack();
	    frame.setSize(500,500);
	}
}
DrawingBoard.java:
Java:
import java.awt.*;
import java.util.Scanner;

import javax.swing.*;
public class DrawingBoard extends JPanel  {
	public int X(int wert) {
		int erg = (getSize().width/2)+wert;
		return erg;
	}
	public int Y(int wert) {
		int erg = (getSize().height/2)-wert;
		return erg;
	}
	public void drawAxes(Graphics g){
		g.drawLine(0,getSize().height/2,getSize().width,getSize().height/2);
		g.drawLine(getSize().width/2,0,getSize().width/2,getSize().height);
	}
	public void draw(String s, Graphics g) {
		Scanner sc = new Scanner(s);
		if (s.startsWith("drawLine(")){
			g.drawLine(sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt());
		}
	}
	public void paint(Graphics g) {
    	super.paint(g);
    	this.setBackground(Color.white);
    	drawAxes(g);
    }
}
in zeile 33 vom editor weiß ich nicht was ich etz da fürn graphics object angeben soll.
vll kann sich ja mal jemand der sich mit Graphics auskennt den code anschauen und sagen ob mein ansatz nicht schon falsch ist...bin noch ziemlich der anfänger.
Danke!
 

mabuhay

Bekanntes Mitglied
in zeile 33 vom editor weiß ich nicht was ich etz da fürn graphics object angeben soll.
vll kann sich ja mal jemand der sich mit Graphics auskennt den code anschauen und sagen ob mein ansatz nicht schon falsch ist...bin noch ziemlich der anfänger.
Danke!

Wenn du in dein DrawinBoard Panel zeichnen willst, brauchst du natürlich dessen graphics-Objekt. Du musst es aber so Programmieren, dass in der Paint-Methode des DrawingBoards die ganze Zeichnung jeweils neu gezeichnet wird (kenne mich nicht allzugut aus, aber so habe ichs schon für kleinere Dinge gemacht). Somit ist sichergestellt, dass die Zeichnung neu gezeichnet wird wenn du das Fenster verschiebst oder die grösse änderst etc. Mach mal ein System.out in die paint Methode rein, dann siehst du wann die immer ausgeführt wird.
Ob das so einfach wird einen "externen" Code zu laden weiss ich nicht. Ich habe erst gerade mal in diesem Forum etwas über Plugins gelesen, ist evtl. ein ähnliches Problem, aber nicht gerade einfach. Evtl. dein Vorhaben als Anfänger ein wenig zu gross, aber sicher interessant ;)

Informiere dich mal darüber wie man externen Code (jar's) lädt. Der Vorschlag einen eigenen Interpreter zu programmieren wäre aber auch nicht soo kompliziert: Linie, Kreis, Rechteck, Text, Bild ... was gibt es sonst noch für Zeichnungsmethoden in Java? Sind ja nicht hunderte für welche du den Text parsen und korrekt an die Funktion übergeben musst.

mfg
 

Java-Freak

Bekanntes Mitglied
ja, aber was sollte das sein, ich habs ja nie benannt...

edit: das problem ist das wenn ich was zeichnen will muss ich ja ein graphics object angeben, das aber nur in DrawingBoard existiert, das ich deshalb von von editor nicht aufrufen kann.
umgekehrt wenn ich die draw methode gleich in paint() einfüge fehlt mir der string , den ich erst in editor bekomme

ich habe auch erst was hier gelesen...
http://www.java-forum.org/codeschnipsel-u-projekte/61076-code-laufzeit-generieren.html
könnte das richtige sein, muss mal durchlesen und ausproblieren. evtl kann ich ja dann auch das drawing board vom neuen code aus aufrufen
 
Zuletzt bearbeitet:

Java-Freak

Bekanntes Mitglied
ok, ich habs selber über ne hilfsmethode gelöst
wens interressiert:
Editor.java
Java:
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;

public class Editor {
	public int postition = 0;
	public static void main(String[] args) {
		JFrame frame = new JFrame("Eos - Java Edition 1.0");
	    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	    frame.setVisible(true);
	    frame.setLayout(new BorderLayout(1,0));
	    final JTextArea ta = new JTextArea();
	    JButton b = new JButton("Ausführen");
	    frame.add( b , BorderLayout.PAGE_END); 
	    frame.add(ta ); 
	    b.addMouseListener( new MouseAdapter() { 
		      public void mouseClicked( MouseEvent e ) { 
		    	  JFrame frame = new JFrame("Eos - Java Edition 1.0 - Drawing Board");
		    	  DrawingBoard board = new DrawingBoard();
		    	  frame.getContentPane().add(board);
		    	  frame.setSize(400,300);
		    	  frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
		    	  frame.setVisible(true);
		    	  board.setS(ta.getText());
		    	  board.draw(board.getGraphics());
		      } 
		    } );    
	    frame.pack();
	    frame.setSize(500,500);
	}
}
DrawingBoard.java
Java:
import java.awt.*;
import java.util.Scanner;
import javax.swing.*;
@SuppressWarnings("serial")
public class DrawingBoard extends JPanel  {
	public int X(int wert) {
		int erg = (getSize().width/2)+wert;
		return erg;
	}
	public int Y(int wert) {
		int erg = (getSize().height/2)-wert;
		return erg;
	}
	static String s;
	public void drawAxes(Graphics g){
		g.drawLine(0,getSize().height/2,getSize().width,getSize().height/2);
		g.drawLine(getSize().width/2,0,getSize().width/2,getSize().height);
	}
	public void setS(String h){
		s=h;
	}
	public static boolean exeptionThrowed= true;
	static boolean exeption= false;
	public static void throwExeption(String t){
		if(!exeption){
			JFrame frame = new JFrame("Eos - Java Edition 1.0 - Fehlermeldung");
			frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
  	  		frame.setSize(500,200);
  	  		frame.setVisible(true);
  	  		JLabel h = new JLabel(t);
  	  		frame.add(h);
  	  		exeption = true;
		}
	}
	public void draw(Graphics g) {
		Scanner sc = new Scanner (s);
		int position = 0;
		while(sc.hasNextLine()){
		 	exeptionThrowed= true;
			position++;
			String r = sc.nextLine();
			Scanner sc2 = new Scanner (r);
		 	if (r.startsWith("linie")){
		 		sc2.skip("linie");
		 		g.drawLine(X(sc2.nextInt()),Y(sc2.nextInt()),X(sc2.nextInt()),Y(sc2.nextInt()));
		 		exeptionThrowed = false;
		 	}
		 	if (exeptionThrowed){throwExeption("Fehler in Zeile: "+position);}
		 	System.out.println("222");
		}
	}
	public void paint(Graphics g) {
    	super.paint(g);
    	this.setBackground(Color.white);
    	drawAxes(g);
    	draw(g);
    }
}
kann zwar bisher nur linien zeichnen und das auch nicht in java aber is im endefekt nur ne anpassungssache der draw methode
trotzdem danke für die antworten!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
zilti Externen Java-Code laden Java Basics - Anfänger-Themen 3
J Muss ich die externen jars mitgeben? Java Basics - Anfänger-Themen 8
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
Silvascus Inhalt eines externen Textdokuments an einen String übergeben Java Basics - Anfänger-Themen 2
M Input/Output Kommunikation mit externen Geräten Java Basics - Anfänger-Themen 0
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
G Externen Button drücken Java Basics - Anfänger-Themen 9
B JAR mit externen JARs in eclipse erstellen Java Basics - Anfänger-Themen 5
C Mit Java Textfeld einer externen Anwendung auslesen Java Basics - Anfänger-Themen 9
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
F Problem mit externen Grafiken und Eclipse Java Basics - Anfänger-Themen 20
R Drucken mithilfe eines Externen ActionListeners Java Basics - Anfänger-Themen 17
M externen Pfad in Jar verwenden Java Basics - Anfänger-Themen 3
T Netbeans: Import von Externen Packet Java Basics - Anfänger-Themen 5
G Externen Prozess starten - entweder stdin oder stderr auslesen Java Basics - Anfänger-Themen 3
Ollek Erstellen einer ausführbaren JAR-Datei mit externen Libaries Java Basics - Anfänger-Themen 9
A Aufruf einer externen schon laufenden Anwendung Java Basics - Anfänger-Themen 3
G JUnit4 mit externen Objecten/Dateien Java Basics - Anfänger-Themen 5
A Methoden von externen Klassen aufrufen Java Basics - Anfänger-Themen 3
S externen Programmpfad auslesen Java Basics - Anfänger-Themen 4
W Start-Probleme mit externen Bibliotheken / JAR-Bildung Java Basics - Anfänger-Themen 2
A Interaktionen mit externen programmen Java Basics - Anfänger-Themen 21
M Programmverhalten in IDE anders als bei externen Programmen Java Basics - Anfänger-Themen 3
P Externen Proceß starten und warten bis beendet? Java Basics - Anfänger-Themen 2
P Problem: Kann keine externen Pakete importieren Java Basics - Anfänger-Themen 11
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 10
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
terashy VS Code Project run error Java Basics - Anfänger-Themen 10
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Connect-4-Code analysieren Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
T Fehlercode bei code der das Alter ausrechnet Java Basics - Anfänger-Themen 2
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
jhfjeh Strukturgramm in code Java Basics - Anfänger-Themen 11
D Tipps zum Code Java Basics - Anfänger-Themen 24
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
ohneInformatik; For Schleife. Was macht dieser Code?? Java Basics - Anfänger-Themen 5
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
Say do-While Code Ausführung Java Basics - Anfänger-Themen 3
W Rückfrage zur Programmgestaltung (clean code) Java Basics - Anfänger-Themen 12
M intelliJ auf neuem PC, plötzlich kein Code Java Basics - Anfänger-Themen 3
Pinhg Sound in Greenfoot Code einbinden Java Basics - Anfänger-Themen 2
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
J Größter gemeinsamer Teiler: mein Code Java Basics - Anfänger-Themen 6
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
A Wie könnte man diesen Code kürzer machen ? Java Basics - Anfänger-Themen 7
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
S Hilfe bei Umänderung von Java Code Java Basics - Anfänger-Themen 16
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
K Wie kann man diesen Code schnell und effizient interpretieren (Man hat nur 4 Minuten) Java Basics - Anfänger-Themen 3
R ISBN-10-Code überprüfen Java Basics - Anfänger-Themen 7
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
I HTML Code säubern Java Basics - Anfänger-Themen 4
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
N Java-Code abwärtskompatibel machen Java Basics - Anfänger-Themen 4
J Erste Schritte Was mache ich in meinem Code falsch. Java Basics - Anfänger-Themen 3
Ameise04 Variablen Inhalt einer Variable im Code verwenden? Java Basics - Anfänger-Themen 9
S Compiler-Fehler Nicht adressierbarer Code ( Non-addressable code ) Java Basics - Anfänger-Themen 5
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
A Code Problem Java Basics - Anfänger-Themen 6
C Fehler im Code Java Basics - Anfänger-Themen 10
A Zu einem bestimmten Ort im Code springen Java Basics - Anfänger-Themen 11
L Ist der Code richtig Java Basics - Anfänger-Themen 3
josfe1234 code vereinfachen Java Basics - Anfänger-Themen 15
nonickatall Ausführbarkeit von Code testen bzw. Remote Debugging Java Basics - Anfänger-Themen 4
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
G Programm Code Java Basics - Anfänger-Themen 5
C Code zusammenfassen Java Basics - Anfänger-Themen 5
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
T Programmablaufsplaninterpretation in Code umformen Java Basics - Anfänger-Themen 1
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
M ISBN-Code Java Basics - Anfänger-Themen 26
B Zeitgleiches Arbeiten am Code mit mehreren Personen? Java Basics - Anfänger-Themen 7
S Wie kann ich bei diesem Code erreichen, das als Ergebnis hier 15 herauskommt? Java Basics - Anfänger-Themen 23
N Kann man den Code vereinfachen? Java Basics - Anfänger-Themen 25
marcooooo Code erklären Java Basics - Anfänger-Themen 28
marcooooo Code erklären Java Basics - Anfänger-Themen 4
S Advent of Code Day4 Java Basics - Anfänger-Themen 4
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
Gaudimagspam Caesars Code entziffern in Java Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben