Was kann ich besser / sinnvoller machen bei meinem code

Status
Nicht offen für weitere Antworten.

megachucky

Bekanntes Mitglied
ok, ich hab nun zumindest die meisten grundlagen so einigermaßen drauf, habe aber noch nie etwas größeres als ein oder zwei klassen programmiert.

nun möchte ich eben mal ein etwas größeres programm schreiben mit GUI, Datenbank usw.
hab nun schonmal angefangen und poste mal meinen bisherigen code.

ich wollte mal ein paar erfahrenere java prorgammierern bitten, mir zu sagen was noch nicht passt und was ich noch verbessern kann in bezug auf javadoc, allgemeiner aufbau, namen-wahl für klassen, methoden und variablen usw.
wäre für ein paar gute tips sehr dankbar.
nicht dass ich erst wenn ich viel weiter bin, zu hören bekomme, dass mein stil oder sonst etwas überhaut nicht passt oder so.

außerdem wollte ich die sachen noch etwas nach client und server trennen. im bezug auf GUI und datenbank muss man eben darauf achten, dass der client nur die GUI ist, und der server dann eigentlich alles weitere, also DB connection, abfragen und die ausgabe in tabellen, das gehört alles zum server.
ich mache am besten daher zwei packages, eins server, eins client.
liege ich da in etwa richtig?

also, wäre sehr dankbar für einige tips, was bei meinem code noch nicht so passt...



Code:
package version1_1.copy.copy;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

/**
 * StartWindow is the start of the Application. You can login and connect to the DB.
 * 
 * @author CHUCKY
 * @version 1.1 Build 02.01.2005
 */
public class StartWindow extends JFrame implements ActionListener
{
	private JButton loginButton, dataBaseConnectionButton, exitButton;
	private JPanel buttonPanel;
	private JFrame startWindow;
	private String login = "login", exit = "exit", connect = "connect";
	
	private LoginWindow loginWindow;
	private DataBaseConnection dataBaseConnection;
	
	/**
	 * Creates a StartWindow.
	 * 
	 * @param title Title of the Window.
	 */
	public StartWindow(String title)
	{
		super(title);
	
		JFrame.setDefaultLookAndFeelDecorated(true);
	   	
	      
	   	Container contentPane = getContentPane();
	   		
	   	buttonPanel = new JPanel(new BorderLayout());
	   	buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 50, 320, 300));
	   	addButtons();
	   	contentPane.add(buttonPanel);
	      
	   	setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	   	pack();
	   	setSize(600, 400);
	   	setVisible(true);	
	}
	
	/**
	 * Adds the Buttons to the Window.
	 *
	 */
	public void addButtons()
	{	
		loginButton = new JButton("Login");
		loginButton.setActionCommand(login);
		loginButton.addActionListener(this);
		
		dataBaseConnectionButton = new JButton("Connect to DB");
		dataBaseConnectionButton.setActionCommand(connect);
		dataBaseConnectionButton.addActionListener(this);
		dataBaseConnectionButton.setEnabled(true); 	//usually: setEnabled(false)
													//only for test purpose			
		
		exitButton = new JButton("Exit");
		exitButton.setActionCommand(exit);
		exitButton.addActionListener(this);
		
		buttonPanel.add(loginButton, BorderLayout.WEST);
		buttonPanel.add(dataBaseConnectionButton, BorderLayout.CENTER);
		buttonPanel.add(exitButton, BorderLayout.EAST);
	}
	/**
	 * Implements the method from the ActionListener Interface.
	 */
	public void actionPerformed(ActionEvent e)
	{
		if (e.getActionCommand().equals(exit))
		{
			System.out.println("Programm Exit.");
			System.exit(0);
		}
		if (e.getActionCommand().equals(login))
		{
			System.out.println("Open Login Window.");

	        loginWindow = new LoginWindow(this);
		}
		
		if (e.getActionCommand().equals(connect))
		{
			System.out.println("Connect to DataBase.");
			dataBaseConnection = new DataBaseConnection();
			//dataBaseConnection.connectToDataBase();
			//dataBaseConnection.doQuery();
			new SQLWindow();
		}
	}
	/**
	 * Enables the DataBaseConnectionButton if the login was commited correctly.
	 *
	 */
	public void checkDataBasePermission()
	{
		if (loginWindow.isAccessAllowed())
		{
			dataBaseConnectionButton.setEnabled(true);
		}
	}
}











/** 
 * LoginWindow opens to make the Login. 
 * 
 * You have to enter your name and password and then click the login button
 * to login. the window will close after pressing the login button, either you have
 * entered the correct nor wrong password.
 * 
 * @author CHUCKY
 * @version 1.1 Build 02.01.2005
 */

package version1_1.copy.copy;

import java.awt.Container;
import java.awt.GridLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JPasswordField;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JTextField;
import javax.swing.JFrame;











public class LoginWindow extends JDialog implements ActionListener
{
	private StartWindow startWindow;
	
	private String cancel = "cancel", login = "login", name = "name", 
		password = "password";
	private Container contentPane;
	private JButton cancelButton, loginButton;
	private JTextField nameTextField;
	private JPasswordField passwordPasswordField;
	
	private String[] nameArray = {"kai", "gabi"};
	private String[] passwordArray = {"abc", "123"};
	
	private boolean isAccessAllowed = false;
	
	
	/** 
	 * Creates a LoginWindow.
	 * 
	 * @param startWindow Referenced StartWindow, which starts this constructor.
	 */
	public LoginWindow(StartWindow startWindow)
	{
		super(startWindow, "LoginWindow");
	    this.startWindow = startWindow;
		
		setDefaultLookAndFeelDecorated(true);
		
		contentPane = getContentPane();
		contentPane.setLayout(new GridLayout(4, 1));
		
		addWidgets();
			
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		pack();
		setSize(400, 200);
		setVisible(true);
		setResizable(false);
	}
	/**
	 * Adds all Widgets to the LoginWindow.
	 * 
	 * Adds all Widgets like Buttons and TextFields to the LoginWindow.
	 *
	 */
	public void addWidgets()
	{
		cancelButton = new JButton("Cancel");
		cancelButton.setActionCommand(cancel);
		cancelButton.addActionListener(this);
		contentPane.add(cancelButton);
		
		nameTextField = new JTextField(10);
		nameTextField.setActionCommand(name);
		nameTextField.addActionListener(this);
		contentPane.add(nameTextField);
		
		passwordPasswordField = new JPasswordField(10);
		passwordPasswordField.setActionCommand(password);
		passwordPasswordField.addActionListener(this);
		contentPane.add(passwordPasswordField);
		
		loginButton = new JButton("Login");
		loginButton.setActionCommand(login);
		loginButton.addActionListener(this);
		contentPane.add(loginButton);
	}

	/**
	 * Implements the method from the ActionListener Interface.
	 */
	public void actionPerformed(ActionEvent e)
	{
		if (e.getActionCommand().equals(cancel))
		{
			System.out.println("Login canceled.");
			setVisible(false);
		}
		
		if (e.getActionCommand().equals(login))
		{
			if (checkStatus())
			{
				System.out.println("Login ok.");
				isAccessAllowed = true;
				startWindow.checkDataBasePermission();
			}
			else
			{
				System.out.println("Login failed. Login Window closed.");
			}	
			setVisible(false);
		}
		
		if (e.getActionCommand().equals(name))
		{
			
		}
	
		if (e.getActionCommand().equals(password))
		{
			
		}
	}
	
	/**
	 * Checks the Status for the Login.
	 * 
	 * Checks if the entered name and password are correct and returns true if
	 * name and password are correct. if true, you are allowed to login.
	 * 
	 * @return Returns true, if name and password are correct. login is allowed then.
	 */
	private boolean checkStatus()
	{
		boolean nameCorrect = false, passwordCorrect = false;
		
		if (nameTextField.getText().length() > 0)
		{
			for (int i=0; i<nameArray.length; i++)
			{
				if (nameTextField.getText().equals(nameArray[i]))
				{
					System.out.println("name ok");
					nameCorrect = true;
				}
			}
		}
		
		if (passwordPasswordField.getPassword().length > 0)
		{
			for (int i=0; i<passwordArray.length; i++)
			{
				if (passwordPasswordField.getText().equals(passwordArray[i]))
				{
					System.out.println("password ok");
					passwordCorrect = true;
				}
			}
		}
			
		if (nameCorrect && passwordCorrect)
		{
			System.out.println("Login done.");
			return true;
		}
		return false;
	}
	
	
	/**
	 * @return Returns the isAccessAllowed.
	 */
	public boolean isAccessAllowed() {
		return isAccessAllowed;
	}
}












package version1_1.copy.copy;

/**
 * The DataBaseOperations Interface determines the database operations, which you can
 * use in the SQL Window.
 * 
 * @author CHUCKY
 * @version 1.1 Build 03.01.2005
 */
public interface DataBaseOperations 
{
	/**
	 * Does the first query in this application. (only for test purposes)
	 *
	 */
	public void doQuery();
}










package version1_1.copy.copy;

/**
 * DataBaseConnection connects to the MYSQL Database and opens a SQL Window with the 
 * result from the transaction, if the connection was done successfully.
 * 
 * @author CHUCKY
 * @version 1.1 Build 02.01.2005
 * 
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DataBaseConnection 
{
	private Connection conn = null;
	private SQLWindow sqlWindow;
	
	public DataBaseConnection()
	{
		
	}
	/**
	 * Connects to the MYSQL DataBase and opens a SQLWindow with the result of the 
	 * transaction, if the connection was done successfully.
	 *
	 */
	public void connectToDataBase()
	{
		String driver = "com.mysql.jdbc.Driver";
		
		try
		{
			Class.forName(driver).newInstance();
			System.out.println("Class Loaded.");
		}
		catch (Exception e)
		{
			System.out.println("Class not found.");
			e.printStackTrace();
		}
		
		String password = "dummies";
		String url = "jdbc:mysql://localhost:3306/";
		String dataBase = "coffeebreak";
		String user = "root";
		
		try 
		{
			conn = DriverManager.getConnection(url+dataBase, user, password);
			System.out.println("Connection done.");
		}
		catch (SQLException sqle)
		{
			System.err.println("Connection failed with: " + url + dataBase + " "
					+ user + " " + password);
			System.err.println("Error message: " + sqle.getMessage());
		}
	}
	
	public void doQuery()
	{
		Statement stmt = null;
		ResultSet rset = null;
		String doQuery = "SELECT COF_NAME FROM COFFEES";
		String cof_name = "";
		
		connectToDataBase();
		
		try 
		{
			stmt = conn.createStatement();
			
			rset = stmt.executeQuery(doQuery);
			
			while (rset.next())
			{
				cof_name = rset.getString("cof_name");
				System.out.println(cof_name);
			}
		}
		catch (SQLException sqle)
		{
			System.err.println("SQL Exception: ");
			System.err.println(sqle.getMessage());
		}
	}
}










package version1_1.copy.copy;

/**
 * Creates a new Window where you can make queries and manipulations to the
 * connected database.
 * 
 * @author CHUCKY
 * @version 1.1 Build 02.01.2005
 */

import java.awt.Container;
import java.awt.FlowLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;



public class SQLWindow extends JFrame implements ActionListener
{
	private JButton doQueryButton;
	private DataBaseConnection dataBaseConnection;
	//private DataBaseOperationsImpl dataBaseOperationsImpl;
	private String doQuery = "doQuery";
	
	public SQLWindow()
	{
		super("SQL Window");
		
		JFrame.setDefaultLookAndFeelDecorated(true);
		
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout());
		
		addButtons();
		
		contentPane.add(doQueryButton);
		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		pack();
		setSize(1000, 600);
		setResizable(false);
		setVisible(true);
	}
	
	public void addButtons()
	{
		doQueryButton = new JButton("Do a Query");
		doQueryButton.setActionCommand(doQuery);
		doQueryButton.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if (e.getActionCommand().equals(doQuery))
		{
			dataBaseConnection = new DataBaseConnection();
			dataBaseConnection.doQuery();
			//dataBaseOperationsImpl = new DataBaseOperationsImpl();
			//dataBaseOperationsImpl.doQuery();
		}
	}
	
}











package version1_1.copy.copy;

/**
 * Starts the Application through the main method.
 * 
 * @author CHUCKY
 * @version 1.1 Build 02.01.2005
 */
public class Run 
{
	public static void main(String[] args)
	{
                new StartWindow("StartWindow");
	}
}
 
B

bygones

Gast
beim flüchtigen drüber gehen sind mir aufgefallen:

du definierst dir variablen "login", "exit" oder so für die buttons - aber benutzt die dann gar nicht (nicht bei der button definition). Des Weiteren würde ich diese als static final deklarieren, da sie als Konstanten fungieren.

Dann hast du zwar ein Interface, aber die Klasse ...Connection implementiert sie nicht, obwohl sie die Methoden übernimmt.

Ansonsten denk ich ist es gut
 

megachucky

Bekanntes Mitglied
thx. also DB verbindung muss ich noch schließen, stimmt.

was genau fehlt denn bei javadoc noch? mir war da nicht ganz klar, was ich auch dem obigen noch kommentieren muss ?!?
 

megachucky

Bekanntes Mitglied
hm, methoden hab ich doch denk ich alle ?!? aber muss ich evtl auch die variablen oder sonst noch was kommentieren, was ich nicht gemacht habe?
 

Student

Top Contributor
*chucky* hat gesagt.:
hm, methoden hab ich doch denk ich alle
nö.
Code:
   public void doQuery() 
   { 
      Statement stmt = null; 
      ResultSet rset = null; 
      String doQuery = "SELECT COF_NAME FROM COFFEES"; 
      String cof_name = ""; 
       
      connectToDataBase(); 
       
      try 
      { 
         stmt = conn.createStatement(); 
          
         rset = stmt.executeQuery(doQuery); 
          
         while (rset.next()) 
         { 
            cof_name = rset.getString("cof_name"); 
            System.out.println(cof_name); 
         } 
      } 
      catch (SQLException sqle) 
      { 
         System.err.println("SQL Exception: "); 
         System.err.println(sqle.getMessage()); 
      } 
   }

???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
S Was ist "besser"? Java Basics - Anfänger-Themen 5
R Uebersichtlicher bzw. besser Programmieren Java Basics - Anfänger-Themen 13
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
S Code richtig / besser machbar? (Nicht sicher, ob Code selbst falsch ist) Java Basics - Anfänger-Themen 4
B Ist MyFrame oder JFrame besser? Java Basics - Anfänger-Themen 3
O Java und JSF besser verstehen Java Basics - Anfänger-Themen 1
M Komplexe Datenauswertungen in Java oder besser auf Datenbankseite ausführen? Java Basics - Anfänger-Themen 4
I Wie diesen Code besser schreiben? (Zeitformate) Java Basics - Anfänger-Themen 2
0 OOP Attributwerte besser im Konstruktor oder vorher zuweisen? Java Basics - Anfänger-Themen 6
A Besser Programmieren Java Basics - Anfänger-Themen 15
L Wo anfangen um besser zu werden Java Basics - Anfänger-Themen 13
L Erste Schritte Sollte ich hier lieber Cases verwenden oder wäre eine If-Bedingung besser? Java Basics - Anfänger-Themen 6
A HashSet (oder besser geignetes) Java Basics - Anfänger-Themen 14
O String-Prüfung: Was ist besser/schneller? Java Basics - Anfänger-Themen 15
O Grundsätzliches: Besser extend oder instanziieren? Java Basics - Anfänger-Themen 4
S OOP Java Kommentare, Programm besser verstehen Java Basics - Anfänger-Themen 6
C Soundwiedergabe in einem Thread - Speicher besser bereinigen Java Basics - Anfänger-Themen 3
A Besser als instanceof Java Basics - Anfänger-Themen 6
H Serialization: Was ist besser(schneller) Binary <-> XM Java Basics - Anfänger-Themen 2
X besser als System.arraycopy(.) Java Basics - Anfänger-Themen 5
G Was würdet ihr besser/anders machen? Java Basics - Anfänger-Themen 9
M Welche Schleife ist besser? Java Basics - Anfänger-Themen 6
H ActionListener - was ist besser. Java Basics - Anfänger-Themen 7
M wie kann man diese Funktion besser machen ? Java Basics - Anfänger-Themen 3
G konkretes beispiel: interface hier besser als abstrakte kl. Java Basics - Anfänger-Themen 4
G String-Vergleich: Was ist besser "equals()" oder & Java Basics - Anfänger-Themen 4
H Generics machen mich verrückt Java Basics - Anfänger-Themen 8
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
A Wie könnte man diesen Code kürzer machen ? Java Basics - Anfänger-Themen 7
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
U Char zu einem String machen Java Basics - Anfänger-Themen 1
N Java-Code abwärtskompatibel machen Java Basics - Anfänger-Themen 4
B Screenshots machen und zwar viele und speichern Java Basics - Anfänger-Themen 12
C Was machen mit nicht mehr verwendeten Instanzen ? Java Basics - Anfänger-Themen 18
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
M Ist es möglich, das größte und zweitgrößte element in einem Array mit nur einer Schleife ausfindig zu machen ? Java Basics - Anfänger-Themen 19
H Array Slot frei machen Java Basics - Anfänger-Themen 3
H Array Slot frei machen Java Basics - Anfänger-Themen 4
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
F JTextField Kursiv und Fett machen Java Basics - Anfänger-Themen 4
F Aufgabenstellung genauer formulieren/verständlicher machen? Java Basics - Anfänger-Themen 10
A Ich habe das Gefühl etwas grundlegendes falsch zu machen Java Basics - Anfänger-Themen 6
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
I JFrame proportional verkleinerbar machen Java Basics - Anfänger-Themen 3
F Aus geraden eine Kurve machen Java Basics - Anfänger-Themen 6
G Boolschen Ausdruck true machen Java Basics - Anfänger-Themen 2
M Java Methode editierbar machen im Programm Java Basics - Anfänger-Themen 62
T Wie weiter machen? Java Basics - Anfänger-Themen 9
G Erste Schritte Fehler ausfindig machen Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
DaCrazyJavaExpert JScollPane scrollbar unsichtbar machen Java Basics - Anfänger-Themen 2
P Aus einem Array zwei Arrays machen Java Basics - Anfänger-Themen 3
G Objekt Instanziierung von Eingabe abhängig machen Java Basics - Anfänger-Themen 5
B Unique ID nochmal Unique machen Java Basics - Anfänger-Themen 20
S JLabel sichtbar machen/GUI Java Basics - Anfänger-Themen 3
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
W Wie kann man zufällige Anordnungen machen? Java Basics - Anfänger-Themen 1
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
D Objekt Transparenter machen Java Basics - Anfänger-Themen 1
S OOP Frage: Methoden nur bei bestimmten Gegebenheiten aufrufbar machen? Java Basics - Anfänger-Themen 4
A Wie kann ich mein Programm noch effizienter machen? Java Basics - Anfänger-Themen 1
S BufferedImage heller/dunkler machen mit RescaleOp Java Basics - Anfänger-Themen 2
I OOP Wie kann ich diesen Code 'Objektorientiert machen' ? Java Basics - Anfänger-Themen 1
C Mit Java Musik machen? Java Basics - Anfänger-Themen 86
TheSorm String zu Methode machen Java Basics - Anfänger-Themen 1
S Funktionen/Atrribute nur innerhalb einer package Zugänglich machen Java Basics - Anfänger-Themen 8
O Zwei Methoden zueinander Thread-safe machen (Locken) Java Basics - Anfänger-Themen 9
Y Eingabe-Formular mit JSP dynamisch machen - j/n/wie? Java Basics - Anfänger-Themen 2
M Ausführen rückgängig machen Java Basics - Anfänger-Themen 2
K RGB Wert Heller machen (Dunkler machen klappt) Java Basics - Anfänger-Themen 2
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T Text auf der Konsole farbig machen Java Basics - Anfänger-Themen 6
O Eigenen Addon-Loader machen? Java Basics - Anfänger-Themen 33
L Auf herunterfahren des PCs reagieren und Datensatz update machen Java Basics - Anfänger-Themen 15
J jar Dateien global erreichbar machen Java Basics - Anfänger-Themen 3
I Objekte verfügbar machen Java Basics - Anfänger-Themen 5
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
R Anzahl der ineinander verschachtelten for-Schleifen von Variable abhängig machen Java Basics - Anfänger-Themen 5
K Vererbung Methoden in klassen auslagern und in mehreren Klassen verfügbar machen Java Basics - Anfänger-Themen 8
B Datentypen Casts typesafe machen? ("unchecked") Java Basics - Anfänger-Themen 10
A Objekt global verfügbar machen Java Basics - Anfänger-Themen 4
B Threads Geschwindigkeit der Befehle auf verschiedenen PCs gleich machen Java Basics - Anfänger-Themen 3
H Ausgabe nebenläufig machen Java Basics - Anfänger-Themen 6
S Erste Schritte import für andere Klassenfiles verfügbar machen? (Java unter Eclipse) Java Basics - Anfänger-Themen 8
GianaSisters Methoden eigenes TableModel -> removeRow möglich machen Java Basics - Anfänger-Themen 30
G Eingabe beliebig lang machen Java Basics - Anfänger-Themen 8
S Kapselung Member korrekt nach aussen verfügbar machen Java Basics - Anfänger-Themen 6
C Threads Methode unterbrechbar machen Java Basics - Anfänger-Themen 12
S Bytecode sichtbar machen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben