Fenster programmieren

Onkel Tom

Mitglied
Forum:

hallo miteinander,
ich arbeite mit dem jdk 1.8.0 auf Windows 10 und beabsichtige ein java.programm für die dos-shell zu schreiben. warum und wieso ich so altmodisch bin und immer noch für die konsole schreibe ist meine sache. auf der suche nach code-material ist mir dieses programm in die quere gekommen. es beschreibt das prinzip des überladens von methoden. ich war auf der suche nach quelltext um bildschirmfenster zu programmieren, es geht mir also nicht um das überladen. wenn ich das programm richtig verstehe, werden drei rechteckobjekte definiert.

ich laß das programm ablaufen. und wo sind nun die drei rechtecke ? zu sehen ist eine ganz normale ausgabe auf dem bildschirm. ich muß die drei bildschirmbereich adressieren können, und würde jedem rechteck eine andere farbe geben wollen. das hat pascal und basic schon vor 20 jahren gekonnt ?

mfg,
onkel tom


Java:
import java.awt.Point;

public class MyRect {
    int x1 = 0;
    int y1 = 0;
    int x2 = 0;
    int y2 = 0;


    MyRect buildRect(int x1, int y1, int x2, int y2){
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
        return this;
    }

    MyRect buildRect(Point topLeft, Point bottomRight){
        x1 = topLeft.x;
        y1 = topLeft.y;
        x2 = bottomRight.x;
        y2 = bottomRight.y;
        return this;
    }

    MyRect buildRect(Point topLeft, int w, int h){
        x1 = topLeft.x;
        y1 = topLeft.y;
        x2 = (x1 + w);
        y2 = (y1 + h);
        return this;
    }

    void printRect(){
        System.out.print("MyRect: <" + x1 + ", " + y1);
        System.out.println(", " + x2 + ", " + y2 + ">");
    }


    public static void main(String[] args) {
        MyRect rect = new MyRect();
        System.out.println("rufe Rechteck bilden mit den Koordinaten 25,25, und 50,50:");
        rect.buildRect(25, 25, 50, 50);
        rect.printRect();
        System.out.println("****");


        System.out.println("rufe Rechteck bilden mit den Punkten (10,10), (20,20):");
        rect.buildRect(new Point(10,10), new Point(20, 20));
        rect.printRect();
        System.out.println("****");


        System.out.print("rufe Rechteck bilden mit 1 Punkt (10,10).");
        System.out.println(" Breite (50) und höhe (50):");
        rect.buildRect(new Point(10,10), 50, 50);
        rect.printRect();
        System.out.println("****");
    }
}
 
Zuletzt bearbeitet von einem Moderator:
ich laß das programm ablaufen. und wo sind nun die drei rechtecke ? zu sehen ist eine ganz normale ausgabe auf dem bildschirm. ich muß die drei bildschirmbereich adressieren können, und würde jedem rechteck eine andere farbe geben wollen. das hat pascal und basic schon vor 20 jahren gekonnt ?
Hierzu kann ich nur sagen: LOL

Nur weil eine Klasse "MyRect" und eine Methode darin "printRect" heißt, erwartest du, dass ein Rechteck auf der Konsole per ASCII-Zeichen gezeichnet wird?

Das ist ja so als würde ich eine Klasse "Kaffeemaschine" und eine Methode "kocheKaffee" nennen und bei Aufruf erwarten, dass aus meinem Computer leckerer Kaffee kommt.

Du musst selbstverständlich mehr Dinge tun, um ordentlich auf dem Terminal "zeichnen" zu können. Das ist sehr viel komplizierter als du vielleicht denkst und BASIC hat hier vieles unter der Haube abstrahiert.

EDIT: Eine populäre Library für das Zeichnen und sogar Fenster- und Inputhandling auf dem Terminal ist ncurses. Das ist aber eine native Library und ich weiß nicht, ob es dafür Java-Bindings gibt.
 
warum und wieso ich so altmodisch bin und immer noch für die konsole schreibe ist meine sache.
Es ist es nicht ungewöhnlich, Software für die Konsole zu schreiben.

Code bitte in Code-Tags setzen, z. B. [code=Java]Dein Code[/code]

Unabhängig davon: wird das nur bei mir so angezeigt, oder hast Du fast jedes Wort unterstrichen? Dein Kommentar ist bei mir kaum lesbar, was durch die fehlende Großschreibung nicht besser wird.
 

Zurück
Oben