Methoden nicht aufrufbar

Kotelettklopfer

Bekanntes Mitglied
Hallo,

ich versuche in meinem ersten großen Übungsprojekt alles schön sauber zu trennen.
So auch die GUI vom Rest des Codes.
Ich habe in meinem GUI Package eine Class Gui erstellt

Darin erstelle ein einen neuen Frame:
JFrame mainframe = new JFrame("Haushaltsbuch");

Er lässt mich aber keine der Funktionen aufrufen. Wenn ich den Code erweitern will
JFrame mainframe = new JFrame("Haushaltsbuch")
mainframe.

Ich erwarte, dass er mir hier jetzt Sachen wie setDefaultCloseOperation anbietet. Macht er aber nicht.
Wenn ich den Code direkt in meine public static void main packe, funktioniert das.

Kann man das nicht so coden wie ich das vorhabe?
Muss die Erstellung des Frames in der Main stattfinden?
 

M.L.

Top Contributor
Wurde die Methode selbst statisch definiert ? Das könnte zumindest "Code direkt in meine public static void main packe, funktioniert das." erklären.
Weiterhin könnte das Gesamtprojekt zum Nachstellen nicht schaden.
 

Jw456

Top Contributor
Hall das zeigen des Codes wäre aber sinnvoll fur eine gute Hilfe.

poste doch den Link zu der Seite wo du dein zip hast.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Ich erwarte, dass er mir hier jetzt Sachen wie setDefaultCloseOperation anbietet. Macht er aber nicht.
Wenn ich den Code direkt in meine public static void main packe, funktioniert das.
1. Du brauchst die notwendigen Imports
2. Anweisungen müssen in Methoden (oder static initializer blocks) stehen. Nachtrag (@JensXF): oder in Konstruktoren, die habe ich vergessen :)
3. Instanzvariablen werden außerhalb von Methoden deklariert (und ggf. initialisiert).
 

Jw456

Top Contributor
in etwa so
Java:
class Test {
    JFrame mainframe;

    public Test() {
        JFrame mainframe = new JFrame("Haushaltsbuch");
        
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.mainframe.getDefaultCloseOperation();

    }
 

Jw456

Top Contributor
sorry es sollte so aussehen "keine neue locale Variable"

Java:
class Test {
    JFrame mainframe;

    public Test() {
        mainframe = new JFrame("Haushaltsbuch");
        
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.mainframe.getDefaultCloseOperation();

    }
 

Kotelettklopfer

Bekanntes Mitglied
Also hier die zwei Codeblöcke.
Der erste ist meine Datei mit der Main Klasse innerhalb meines Main Packages
Wenn ich hier JFrame nutze funktioniert es.
[CODE lang="java" title="Package main -> Main Klasse" highlight="1,6,8,9"]package Main;

import javax.swing.*;

public class Main {
public static void main(String[] args) {

JFrame mainframe = new JFrame("Haushaltsbuch");
mainframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}[/CODE]

Der zweite Block ist in einer extra Datei namens Gui
Auch hier sind die imports drin, aber Exit.on.close gibt es hier scheinbar nicht.

[CODE lang="java" title="package gui -> public class Gui" highlight="14"]package gui;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Gui {

// Swing Fenster erstellen
JFrame mainframe = new JFrame("Haushaltsbuch");
mainframe.[/CODE]


Der Rest Code ist in meiner DB Klasse und steuert nur die Datenbank connection, also für das Thema hier irrelevant.
 

Kotelettklopfer

Bekanntes Mitglied
sorry es sollte so aussehen "keine neue locale Variable"

Java:
class Test {
    JFrame mainframe;

    public Test() {
        mainframe = new JFrame("Haushaltsbuch");
       
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.mainframe.getDefaultCloseOperation();

    }
Hier wäre die klassse mit dem Frame ja mit in der "Datei" wo die Main steht.
Ich möchte das separat inn einer anderen "Datei".

1627241625909.png
 

Jw456

Top Contributor
Wo in welcher klasse die main Methode ist ist ziemlich unwichtig.
Sie ist static.

Aber was machst du du willst im Klassenrumpf auf die variable zugreifen. Geht nicht. Das erstellen der Variable und auch das Setzen der Variablen geht.

Besser und auch übersichtlicher ist es keine statement im Klassenrumpf zu benutzen.
Dafür ist der Konstruktor sinnvoller .


Zum benutzen musst du dich schon in einer Methode befinden. Oder im Konstruktor.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Der zweite Block ist in einer extra Datei namens Gui
Auch hier sind die imports drin, aber Exit.on.close gibt es hier scheinbar nicht.
Wie ja nun schon mehrfach erwähnt wurde: Anweisungen müssen in Methoden/Konstruktoren stehen:

Java:
public class Gui {

    // Instanzvariable deklarieren und initialisieren
    JFrame mainframe = new JFrame("Haushaltsbuch");

    // Konstruktor
    public Gui() {
        mainframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        // ...
    }

Oder:

Java:
public class Gui {

    // Instanzvariable deklarieren
    JFrame mainframe;

    // Konstruktor
    public Gui() {
        // Instanzvariable initialisieren
        mainframe = new JFrame("Haushaltsbuch");

        mainframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        // ...
    }
 

Kotelettklopfer

Bekanntes Mitglied
OK habe jetzt in der Datei GUI, in der Klasse GUI die Variable und den Konstruktor angelegt und in meiner Main Datei rufe ich es in der Main Klasse auf. Klappt !!

Leider habe ich aber noch arge Probleme mit dem Verständnis.
Was bzw. wie ist es gemeint, wenn man sagt GUI & Code muss getrennt werden.

Wäre das Vorgehen wie ich es mache so richtig ?
Ich mache mir für jede Klasse eine neue Datei auf (siehe Screenshot #14).. oder hat man eine Datei inkl. Main und haut da die unterschiedlichen Klassen rein.
Bin ich vielleicht sogar gerade total lost ?
Leider komme ich mit meinen Büchern nicht sonderlich weiter.
 

M.L.

Top Contributor
GUI & Code muss getrennt werden
Es muss gar nichts, da die Software streng gesehen wirklich *irgendwie* (*) zusammengebaut werden kann. Längerfristig kann die Trennung aber Sinn haben: https://www.java-forum.org/thema/wi...vernuenftige-klassen-ein.185926/#post-1197005

(*)menschliche Faktoren und Herangehensweisen werden so aber vernachlässigt. Genau damit befassen sich Quellen wie software-architektur.tv oder der YT-Kanal von "the native web GmbH"
 
K

kneitzel

Gast
Bezüglich mehrere Dateien ja/nein:
In Java sollte jede Klasse in einer Datei sein, die genau so heisst wie die Klasse. (So die Klasse "public" ist, ist dies auch Pflicht!)

Daher wäre das so erst einmal korrekt.

Wichtig ist aber dann noch, dass die Klassen ein Objektmodell beschreiben, alsoObjekte mit diesen Klassen erzeugt werden, die dann Status und Verhalten haben und miteinander agieren.

GUI und Code Trennen ist dann vom Wording her auch nicht ganz so, wie ich es ausdrücken würde. Es geht halt darum, eigenständige Verantwortungen zu haben. Eine Klasse (die durchaus aus Code besteht, denn wie erstellst Du sonst die Swing UI? Da muss ja sowas wie new JFrame(), new JLabel, ... vorkommen. Das ist ja auch Code.) sollte also eine Verantwortung haben. So kannst Du in dem Namespace gui eine Klasse haben, die dann das Fenster aufbaut. Diese Klasse sollte aber dann nur für die Oberfläche zuständig sein. Wenn der Benutzer einen Knopf drückt, dann registriert diese Klasse das, aber die Verantwortung, da etwas sinnvolles zu machen, sollte dann bei einer anderen Klasse liegen. In dem MVC Pattern (Model, View, Controller) wäre da dann der Controller dafür zuständig. Aber alle fachliche Logik findet sich auch nicht im Controller sondern die ist im Model.

Also wenn man das ganz kurz umreissen müsste (Adressverwaltung):
- Die View erstellt die Oberfläche. Die Daten dazu kommen aus einem Model. Es könnte also die Anzeige einer Adresse sein: Fenster mit Name, Straße, PLZ, Ort wird angezeigt. Dazu wurde der View eine Instanz der Klasse Address (Model) gegeben. Und die View kennt einen Controller, der wurde auch gegeben (also z.B. eine Instanz von AddressController). Damit kann die View die Daten aus dem Model anzeigen. Wie, ist ganz allein in der Verantwortung der View. Und wenn etwas passiert, dann wird der Controller aufgerufen. Also z.B. clickt der Benutzer auf Save. Dann wird im Controller die Methode save(...) aufgerufen mit den Informationen, die der Controller braucht. Bei einem UI Framework wie Swing habe ich üblicherweise immer zwei Methoden gehabt: Einmal Datentransfer von Model in Controls und zum Anderen in die andere Richtung. Dann wird bei save das Model übergeben oder der Controller hat noch die Instanz vom Model und dann muss nichts übergeben werden.
- Der Controller kennt die Applikation. Wenn also eine Adresse angezeigt werden soll, dann weiss er: Dazu gibt es eine View. Die braucht gewisse Daten. Also holt es die notwendigen Daten (z.B. aus der Datenbank), erstellt das Model für die View und erstellt die View mit den benötigten Informationen.
- Wichtig ist: Wenn das Model schon Business Logik enthält (Die Address Klasse kann sich selbst speichern), dann wird dies nicht von der View aufgerufen! Das ist einfach nicht die Verantwortung von der View! Also immer etwas auf die Zuständigkeiten achten.

Das wäre eine mögliche Strukturierung.
 

Kotelettklopfer

Bekanntes Mitglied
Ich versuche mal einigermaßen Verständlich mein Projekt hier zu präsentieren und werde dann meine Probleme/Fragen pro Klasse aufschreiben.
Ich bitte nochmal um Entschuldigung wenn manche Fragen seltsam erscheinen sollten, aber bis dato wurde mir hier am besten geholfen obwohl ich mich Fachlich manchmal eher seltsam ausdrücken mag :)


Projekt Haushaltsbuch: Es soll mit der Zeit wachsen und später wenn es einen vernünftigen brauchbaren Stand hat, auch genutzt werden.
Es wird mit der Zeit auch mit Sicherheit noch einiges geändert werden (Optik/Anwendungsumfang etc.), aber irgendwo musste ich ja starten.

Zur Zeit gibt es 4 Dateien mit jeweiligen (Klassen)
In einem Udemy Kurs wurde hier mit separaten Paketen gearbeitet (wurde schon hingewiesen, dass dies wohl nicht ganz normal sei.

Main.java (public class Main)

Java:
package Main;

import application.DBStatement;
import gui.Layout;


public class Main {
    public static void main(String[] args) {

        //Datenbank Verbindung wird aufgebaut
        DBStatement dbStatement = new DBStatement();

        try {
            dbStatement.checkDBConnection();
            System.out.println(dbStatement);
        } catch (Exception e) {
            e.printStackTrace();
        }

        //GUI wird erstellt
        Layout window = new Layout("Haushaltsbuch");
        window.setVisible(true);

    }


}


DBConnection.java (public class DBConnection)

Java:
package dbUtil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;



public class DBConnection {

    //Datenbank Verbindung
    public static final String DB_Name = "Haushaltsbuch.db";
    public static final String DB_Path = "F:\\Projekte\\Haushaltsbuch\\src\\";

    public static final String CONNECTION_STRING = "jdbc:sqlite:" + DB_Path + DB_Name;

    public Connection getConnection() throws SQLException {
        Connection connection = null;
        connection = DriverManager.getConnection(CONNECTION_STRING);

        return connection;

    }


}

DBStatement.java (public class DBStatement)

Java:
package application;


import dbUtil.DBConnection;

import java.sql.*;



public class DBStatement {


    //DB Connection

    private DBConnection dbConnection = new DBConnection();


    private Connection connection = null;

    private Statement statement = null;

    private PreparedStatement preparedStatement = null;

    private ResultSet resultSet = null;


    public boolean checkDBConnection() throws SQLException {

        connection = dbConnection.getConnection();


        if (connection != null) {

            return true;

        } else {

            return false;

        }

    }



}



Layout.java (public class Layout extends JFrame)

[CODE lang="java" highlight="44-52"]package gui;

import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;



public class Layout extends JFrame {
public Layout(String title) {
super(title);
this.setSize(700, 300);
this.setLocation(100, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);

JTextField textAusgabeMonat = new JTextField("Bitte geben Sie den Monat ein");
JTextField textAusgabeArt = new JTextField("Bitte geben Sie die Art der Ausgabe an");
JTextField textAusgabeName = new JTextField("Bitte geben Sie den Namen der Ausgabe an");
JTextField textAusgabeBetrag = new JTextField("Bitte geben Sie den Betrag an");
JButton buttonOk = new JButton("Ok");


Container mainContainer = this.getContentPane();
mainContainer.setLayout(new BorderLayout(4, 4));
mainContainer.setBackground(Color.white);
this.getRootPane().setBorder(BorderFactory.createMatteBorder(4, 4, 4, 4, Color.BLACK));

JPanel topPanel = new JPanel();
topPanel.setBorder(new LineBorder(Color.BLACK, 3));
topPanel.setBackground(Color.DARK_GRAY);
topPanel.setLayout(new FlowLayout(3));

topPanel.add(textAusgabeMonat);
topPanel.add(textAusgabeArt);
topPanel.add(textAusgabeName);
topPanel.add(textAusgabeBetrag);
topPanel.add(buttonOk);
mainContainer.add(topPanel, BorderLayout.NORTH);


buttonOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String ausgabeMonat = textAusgabeMonat.getText();
String ausgabeArt = textAusgabeArt.getText();
String ausgabeName = textAusgabeName.getText();
String ausgabeBetrag = textAusgabeBetrag.getText();

}


});


}
}

[/CODE]

In der Klasse Layout habe ich es jetzt hinbekommen -dank eurer Hilfe- , dass ich die Instanz an die Main weitergeben kann und diese dort aufrufbar ist.
Jetzt möchte ich aber auch, dass wenn jemand etwas in die Textfelder schreibt, dieser Text in meine DB geschrieben wird (siehe Zeile 44 -52)

Damit der Text in die DB kommt, muss ich dafür ein Statement bauen. Dieses würde ich in Klasse DBStatement sehen
Insert INTO ............. + textAusgabeMonat + usw...
Mir bereitet es aber ernome Probleme zu verstehen, wie ich jetzt nur den Teil mit dem ActionListener in die DBStatementKlasse bekomme, weil wenn ich jetzt in der Statement Klasse einfach eine Instanz der Layout Klasse aufrufen würde, würde dort ja noch eine komplette GUI erstellt werden !? Das wäre ja falsch.

Verständlich wie ich das meine ? :)
 

Barista

Top Contributor
Deine Klasse DBStatement hat nach meiner Meinung keinen besonderen Wert.

Nach meiner Meinung solltest Du eine Klasse schreiben, die möglicherweise Persister heissen sollte, DBConnection ist aber als Name auch ok.

Die Daten ausgabeMonat, ausgabeArt, ausgabeName und ausgabeBetrag solltesr Du in einer Klasse Ausgabe zusammenfassen.

Deine DBConnection-Klasse sollte jetzt eine Methode

insert(Ausgabe ausgabe)

haben.

Genauso update und delete.

Zum Anzeigen benötigst Du eine Methode

List<Ausgabe> select()

Diese Methode kannst Du bei Bedarf beliebig um Filter-Parameter erweitern.
 

Barista

Top Contributor
Für update und delete benötigst Du auf der Datenbank ein Feld als technischen Primary-Key, dessen Wert auch in der Klasse Ausgabe gespeichert werden muss.
 

Barista

Top Contributor
Als ich noch JDBC gemacht habe, war dieses Buch meine beste Quelle:

Java-Persistenzstrategien. Datenzugriff in Enterprise-Anwendungen: JDO, JCA, Enterprise Java Beans, JDBC, XML Taschenbuch – 23. März 2004
von Andreas Holubek (Autor), Rudolf Jansen (Autor), Robert Munsky (Autor), Eberhard Wolff (Autor)

Herausgeber ‏ : ‎ Software & Support/PRO; 1., Aufl. Edition (23. März 2004)
Sprache ‏ : ‎ Deutsch
Taschenbuch ‏ : ‎ 399 Seiten
ISBN-10 ‏ : ‎ 3935042493
ISBN-13 ‏ : ‎ 978-3935042499

oder dieses:

Java in Datenbanksystemen . JDBC, SQLJ, Java DB-Systeme
November 2001
Publisher: Addison Wesley VerlagISBN: 3827318890


oder:

Datenbanken & Java. JDBC, SQLJ und ODMG Taschenbuch – 1. Mai 2000
von Gunter Saake (Autor), Kai-Uwe Sattler (Autor)

Herausgeber ‏ : ‎ Dpunkt Verlag; 1. Edition (1. Mai 2000)
Sprache ‏ : ‎ Deutsch
ISBN-10 ‏ : ‎ 3932588541
ISBN-13 ‏ : ‎ 978-3932588549


oder:

Anwendungsprogrammierung mit JDBC: Datenbanken - Java - Client/Server Taschenbuch – 29. September 1999
von Wolfgang Dehnhardt (Autor)

Herausgeber ‏ : ‎ Hanser Fachbuch (29. September 1999)
Sprache ‏ : ‎ Deutsch
Taschenbuch ‏ : ‎ 256 Seiten
ISBN-10 ‏ : ‎ 3446212655
ISBN-13 ‏ : ‎ 978-3446212657
Abmessungen ‏ : ‎ 16 x 1.5 x 22.7 cm
 

Kotelettklopfer

Bekanntes Mitglied
Die Daten ausgabeMonat, ausgabeArt, ausgabeName und ausgabeBetrag solltesr Du in einer Klasse Ausgabe zusammenfassen.
Und genau hier kommt mein Problem. Ich bin zu blöd die Variablen samt Wert aus der Layout in die neue Klasse Ausgabe zu bekommen.
Ich wüsste jetzt nur wie ich die komplette Layout Instanz in der neuen Klasse Ausgabe integrieren könnte, sodass mir dort ein weiteres Frame etc generiert werden würde...
 

Barista

Top Contributor
Und genau hier kommt mein Problem. Ich bin zu ??? die Variablen samt Wert aus der Layout in die neue Klasse Ausgabe zu bekommen.

Hier mal angedeutet (von Hand geschrieben, nicht geprüft):

[CODE lang="java" title="Bean Ausgabe"]public class Ausgabe
{
public int ausgabeMonat;

// eventuell hier ein enum
public String ausgabeArt;

public String ausgabeName;

public double ausgabeBetrag;

}[/CODE]

[CODE lang="java" title="Insert Ausgabe in DB"] buttonOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String ausgabeMonat = textAusgabeMonat.getText();
String ausgabeArt = textAusgabeArt.getText();
String ausgabeName = textAusgabeName.getText();
String ausgabeBetrag = textAusgabeBetrag.getText();

Ausgabe ausgabe = new Ausgabe();
ausgabe.monat = Integer.parseInt(ausgabeMonat);
ausgabe.art = ausgabeArt;
ausgabe.name = ausgabeName;
ausgabe.betrag = Double.parseDouble(ausgabeBetrag);

DBConnection.insert(ausgabe);
}
[/CODE]
 

Kotelettklopfer

Bekanntes Mitglied
Egal wo ich
Java:
       buttonOk.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String ausgabeMonat = textAusgabeMonat.getText();
                String ausgabeArt = textAusgabeArt.getText();
                String ausgabeName = textAusgabeName.getText();
                String ausgabeBetrag = textAusgabeBetrag.getText();

                Ausgabe ausgabe = new Ausgabe();
                ausgabe.monat  = Integer.parseInt(ausgabeMonat);
                ausgabe.art    = ausgabeArt;
                ausgabe.name   = ausgabeName;
                ausgabe.betrag = Double.parseDouble(ausgabeBetrag);

                DBConnection.insert(ausgabe);
            }

hinpacke, ich kriege immer die Meldung "Cannot resolve buttonOK" und beim Listener "Invalid method declaration; return type required"

Ich stehe gerade so derbe auf dem Schlauch, das grenzt schon an Verzweiflung.
 
K

kneitzel

Gast
Das Problem ist, dass Du die Elemente in lokalen Variablen vorhältst:
Java:
public class Layout extends JFrame {
    public Layout(String title) {
        super(title);
        this.setSize(700, 300);
        this.setLocation(100, 100);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);

        JTextField textAusgabeMonat = new JTextField("Bitte geben Sie den Monat ein");
        JTextField textAusgabeArt = new JTextField("Bitte geben Sie die Art der Ausgabe an");
        JTextField textAusgabeName = new JTextField("Bitte geben Sie den Namen der Ausgabe an");
        JTextField textAusgabeBetrag = new JTextField("Bitte geben Sie den Betrag an");
        JButton buttonOk = new JButton("Ok");

Damit existieren die Variablen textAusgabeMonat, textAusgabeArt, .... nur innerhalb des Konstruktors.

Eine Möglichkeit: Erstelle Instanzvariablen:

Java:
public class Layout extends JFrame {
    
    JTextField textAusgabeMonat;
    JTextField textAusgabeArt;
    JTextField textAusgabeName;
    JTextField textAusgabeBetrag;
    JButton buttonOk;
    
    public Layout(String title) {
        super(title);
        this.setSize(700, 300);
        this.setLocation(100, 100);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);

        textAusgabeMonat = new JTextField("Bitte geben Sie den Monat ein");
        textAusgabeArt = new JTextField("Bitte geben Sie die Art der Ausgabe an");
        textAusgabeName = new JTextField("Bitte geben Sie den Namen der Ausgabe an");
        textAusgabeBetrag = new JTextField("Bitte geben Sie den Betrag an");
        buttonOk = new JButton("Ok");

Damit sind die Elemente innerhalb der Klasse zugreifbar.
 

Kotelettklopfer

Bekanntes Mitglied
So jetzt ist alles durcheinander und ich komme garnicht mehr klar.
Meine Euphorie weicht langsam der Enttäuschung.

Denke ich werde das Projekt erstmal liegen lassen.
Vielleicht ist es einfach zu viel erwartet, jetzt schon ein Projekt zu schreiben.
Vielleicht sollte ich erstmal beim Hallo Welt bleiben.

Werde wohl nicht drum rum kommen erstmal weiter Kurse und Bücher zu inhalieren.


Danke für die Zeit und Hilfe.. mein Kopf will es einfach nicht schnallen :)
 

mrBrown

Super-Moderator
Mitarbeiter
Denke ich werde das Projekt erstmal liegen lassen.
Vielleicht ist es einfach zu viel erwartet, jetzt schon ein Projekt zu schreiben.
Dazu ein ganz klares "Jein" ;)

Ganz grundsätzlich ist so ein Projekt super, fachlich ist das interessant und schön modellierbar und technisch lässt sich das auch super umsetzen – aber, GUIs sind für den Anfang einfach zu viel. Alle Grundlagen müssen wirklich sitzen, bevor man sich daran macht, mit GUIs zu arbeiten.

Daher wäre mein Rat für dieses Projekt: setz es fort, verzichte aber erstmal auf eine grafische Oberfläche und steuere das ganze z.B. über die Kommandozeile.
 

Kotelettklopfer

Bekanntes Mitglied
Dazu ein ganz klares "Jein" ;)

Ganz grundsätzlich ist so ein Projekt super, fachlich ist das interessant und schön modellierbar und technisch lässt sich das auch super umsetzen – aber, GUIs sind für den Anfang einfach zu viel. Alle Grundlagen müssen wirklich sitzen, bevor man sich daran macht, mit GUIs zu arbeiten.

Daher wäre mein Rat für dieses Projekt: setz es fort, verzichte aber erstmal auf eine grafische Oberfläche und steuere das ganze z.B. über die Kommandozeile.
Danke für den Tip.
Habe jetzt mal sauber von Null angefangen und versuche jetzt was strukturierter an die Sache ranzugehen.
Diesmal dann ohne GUI.

Vielleicht erwarte ich dann doch etwas viel von mir in der kurzen Zeit und sollte, wie du schreibst, erstmal die Basics in den Kopf klopfen.
 

M.L.

Top Contributor
Trotzdem gibt es auch mit alleiniger Kommandozeilen-Implementierung einige (längerfristig) zu beachtende Prinzipien bei der Organisation. Z.B. kann es vorteilhafter sein, wenn eine Erweiterung / Änderung nur an einer (zentralen) Stelle im Code erfolgt.
Bzgl. GUI-Programmierung sollte man auf GUI-Builder erstmal verzichten, da diese Aspekte wie Wiederverwertbarkeit, Erweiterbarkeit,... (mangels Kenntnis der Zusammenhänge) aussen vor lassen (könn(t)en). Ein Beispiel aus der .NET-Welt: MyCSharp - Variablennamen zur Laufzeit... (wobei sich nicht alles 1:1 auf die Java-Welt übertragen lässt, "ArrayList" ist in Java das neuere)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Interface Methoden nicht aufrufbar Java Basics - Anfänger-Themen 7
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
C Methoden können nicht auf Instanzvariable der Klasse zugreifen Java Basics - Anfänger-Themen 3
N Klassen Warum kann meine Klasse nicht auf Methoden der anderen Klasse zugreifen? Java Basics - Anfänger-Themen 6
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
B Polymorphie Warum funktionieren polymorphe Referenzvariablen bei überschriebenen Methoden und bei nicht überschriebenen nicht? Java Basics - Anfänger-Themen 3
C nicht statische Methoden Java Basics - Anfänger-Themen 4
H Methoden können nicht verwendet werden Java Basics - Anfänger-Themen 10
MiMa Methoden Methoden teilweise nicht gefunden? Java Basics - Anfänger-Themen 9
K Methoden Methoden in Methoden -> static oder nicht? Java Basics - Anfänger-Themen 7
S Methoden Linked List Methoden können nicht aufgerufen werden Java Basics - Anfänger-Themen 1
R Methoden... ich vesteh sie einfach nicht Java Basics - Anfänger-Themen 15
B Set&Get Methoden oder doch nicht? Java Basics - Anfänger-Themen 21
Java-Insel Methoden FileWriter Methoden funktionieren nicht Java Basics - Anfänger-Themen 20
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
P Datentypen Warum findet er diese methoden nicht? Java Basics - Anfänger-Themen 13
M methoden aufruf klappt nicht Java Basics - Anfänger-Themen 6
StupidAttack Abstrakte Methoden in nicht-abstrakter Methode in abstrakter Klasse Java Basics - Anfänger-Themen 6
P OOP Getter&Setter Methoden funktionieren nicht Java Basics - Anfänger-Themen 7
T Methoden werden nicht aufgerufen Java Basics - Anfänger-Themen 5
D Bekomme das nicht hin (set / get Methoden) Java Basics - Anfänger-Themen 22
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
F get/set Methoden oder nicht? Java Basics - Anfänger-Themen 9
M Tastatur.leseZahl(); geht nicht in Methoden ? Java Basics - Anfänger-Themen 3
T Methoden funktionieren nicht Java Basics - Anfänger-Themen 5
M Methoden. ich versteh das einfach nicht! Bitte helfen! Java Basics - Anfänger-Themen 4
D Statische und Nicht-Statische Methoden Java Basics - Anfänger-Themen 7
M Problem mit nicht statischen Methoden Java Basics - Anfänger-Themen 6
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
L Rekursive Methoden Java Basics - Anfänger-Themen 14
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
S Methoden - Warum int wenn auch void? Java Basics - Anfänger-Themen 3
H Kann man Methoden öfter aufrufen? Java Basics - Anfänger-Themen 2
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
P Objekt in mehreren Methoden verwenden. Java Basics - Anfänger-Themen 3
M Aufruf von statischen Methoden einer anderen Klasse Java Basics - Anfänger-Themen 15
lougoldi Verkettung von Methoden und Konstruktoren Java Basics - Anfänger-Themen 4
Zeppi OOP Methoden mit einander Verknüpfen Java Basics - Anfänger-Themen 6
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
A Parametar übergabe zwischen Methoden Java Basics - Anfänger-Themen 26
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
O Attribute die Methoden zählen Java Basics - Anfänger-Themen 5
M Bräuchte Hilfe bei diesen Methoden Java Basics - Anfänger-Themen 4
G Methoden Methoden mit versch. Datentypen Java Basics - Anfänger-Themen 1
Junger_Basileus Celsius -> Fahrenheit / Strukturierung in statischen Methoden Java Basics - Anfänger-Themen 7
J Verschachtelte Methoden Java Basics - Anfänger-Themen 9
H Methoden in anderen Methoden aufrufen Java Basics - Anfänger-Themen 6
Kawastori Hilfe bei Methoden Übung Java Basics - Anfänger-Themen 6
veryck Methoden Rekursive Methoden mit Rückgabeparameter Java Basics - Anfänger-Themen 9
P Methoden aufrufen - Fehler Java Basics - Anfänger-Themen 20
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
C eigene Methoden erstellen (Instanzmethoden) Java Basics - Anfänger-Themen 7
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Generics Methoden Java Basics - Anfänger-Themen 7
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
S throws bei Methoden Java Basics - Anfänger-Themen 4
L Best Practice Code Refactoring für Methoden mit fast gleicher Aufbau Java Basics - Anfänger-Themen 6
I Greedy Methode Methoden nutzen Java Basics - Anfänger-Themen 3
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15
S Übergabe von Arrays an Methoden Java Basics - Anfänger-Themen 20
L Methoden Wie Löse ich ext Methoden Aufruf Fehler? Java Basics - Anfänger-Themen 3
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
T Methoden Verständnis Java Basics - Anfänger-Themen 14
M Feste Reihenfolge von dem Ablauf von Methoden Java Basics - Anfänger-Themen 7
G Java Abstrakte Methoden Java Basics - Anfänger-Themen 2
Ich lerne Java. Methoden Mehrere Methoden mit Punkt Java Basics - Anfänger-Themen 45

Ähnliche Java Themen

Neue Themen


Oben