Abfragen von Extenem Programm?

mrno

Erfahrenes Mitglied
Hi,
ich habe wieder mal ein Problem. Ich habe ein Konsolen programm programmiert. Wie kann ich jetzt für dieses Konsolenprogramm ein eigenständige GUI basteln? Kann ich auf das Laufende Konsolenprogramm zugreifen und Werte abfragen? Oder brauch ich da eine Schnittstelle? Wie mache ich sowas?
Am besten wäre es wenn ich irgendwie die Klassen und Methoden für das Konsolenprogram direkt abfragen kann? ist sowas möglich?
 
Ob das nun möglich ist kann ich dir leider nicht sagen, aber es stellt sich doch die Frage ist es nötig? Warum nicht aus der Konsolenanwenung eine GUI-Anwendung machen. JAVA bietet dir auf der Ebene der GUIs jedenfalls mehr Möglichkeiten.

Achja mit den Klassen JFrame oder JDialog kannst du dir einfache Klassen ableiten.

Code:
package de.ekaz.fahrdienst;

import javax.swing.*;
import java.awt.*;

/**
 * Created by IntelliJ IDEA.
 * User: Hannes Maack
 * Date: 21.11.2006
 * Time: 18:11:32
 */
public class MyGUI
        extends JFrame
{

    public MyGUI()
            throws HeadlessException
    {
        setTitle("Mein neues Fenster");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args)
    {
        MyGUI frame = new MyGUI();
        frame.setSize(800, 600);
        frame.setVisible(true);
    }
}
 
Zuletzt bearbeitet:
Hi magnet,
ich woltle das Programm so Programmieren wie viele anderen tools unter linux. D.H. unter linux gibt es jede menge konsolen tools die man verwendet. Die GUI verbindet meistens nur die Programme mit einander um das starten zu vereinfachen. Ich möchte aber jetzt beide möglichkeiten haben, Steuern über die Konsole oder/und die GUI. Deswegen schrieb ich das ich eine unabhängige GUI haben möchte.

Eigendlich suche ich ja nur eine möglichkeit werte von dem einen Programm zu ermitteln und in einem anderen anzuzeigen.
Z.B. startet das erste Programm einen Counter der von 0-100% Zählt der wert lässt sich über die Methode getCountState ermitteln. Wie kann ich jetzt z.B. mit einem anderen Java Programm die Methode getCountState auslesen? Kann ich überhaupt auf das andere Programm Zugreifen?
 
Moin!
Eigentlich ist das schlechtes Design. Wenn man sowohl Konsole als auch GUI haben möchtest, würde ich meine Anwendung nach dem Model-View-Control Design Pattern ausrichten (ansonsten eigentlich auch ;) ). D.h. Benutzeroberfläche( also Konsole, GUI) strikt sowohl vom Datenmodell als auch von der Programmsteuerung zu trennen. Damit die Kommunikations zwischen diesen 3 Komponenten auch funktioniert, gilt es Schnittstellen zu definieren.
Wenn du das hast, kannst du ja sowohl Konsole als auch GUI bei den anderen Komponenten als Benutzeroberfläche registrieren. Beziehunsweise vielleicht über einen Startparamter regeln, welche Oberfläche nun gestartet werden soll.

Zurück zu deiner Frage. Ob man von einem Java Programm auf die Objekte eines anderes externen Java Programms zugreifen kann, ist mir nicht bekannt. Es sei denn natürlich, das Programm bietet eine entsprechende Schnittstelle an. Sofern du also deine Anwendung nicht neu designen willst, würde ich vorschlagen, so eine Schnittstelle in deinem Konsolenprogramm einzurichten. Am einfachsten wäre das wohl sicherlich mit RMI zu realisieren..

*grüssle*
MeinerEiner
 
Eine GUI für eine Konsolenanwendung macht ja nichts anderes als im Hintergrund die Konsolenanwendung mit ausgewählten Parametern aufzurufen und deren Ausgabe wieder graphisch darzustellen.

Und das ist beides natürlich mit Java möglich: schau dir mal die Klassen Process und Runtime an!

Interne Methoden des Konsolenprogramms werden dabei nicht verwendet - dieses Programm kommt ja oftmals nicht vom selben Programmierer wie die GUI, somit sind diesem die Methoden gar nicht bekannt. Außerdem können sich die internen Methoden ja auch ändern.
 
Zuletzt bearbeitet:
Zurück