Hallo zusammen
Da ich mein letztes Tool mit einem GUIBilder ber Drag'n'Drop zusammengeklickt habe und der Code ja absolut untragbar aussieht habe ich mich nun weiter mit Swingtutorials beschäftigt.
Dabei geht es nun aktuell um Grundlegende Funktionsfragen wie man es "besser" löst...
Folgendene Javacode habe ich mit drei verschiedenen Tutorials erstellt:
1. Frage
Zum einen lese ich immer wieder dass "extends JFrame" eine mögliche Lösung sei, aber dies sei unsauber wenn man keine Überschreibungen macht. -> Sind hier von Methodenüberschreibungen der Klasse JFrame gemeint und warum ist dies unsauber?
Was ich leider nicht ganz kapiere, wie muss ich es denn machen ohne "extends JFrame"?
2. Frage
Ich habe hier zwei verschiedene Möglichkeiten gebaut ActionListener an die Componenten hinzuzufügen. Welcher Weg ist der "bessere/saubere"? Ich finde den beim "OK2Button" komplizierter / unübersichtlicher. Allerdings finde ich die Art unschön dass ich beim "OKButton" das Objekt in eine Variabel schreiben muss und dem panel zuordnen. Ansonsten kann ich keine "if-Abfrage auf den Button" machen. Muss der ActionListener immer per "Implements" der Klasse angehängt werden oder ist dies auch "unsauber" und man sollte es anders lösen?
3. Frage
Es gibt X verschiedene Layouts, Border, Flow, Grid, Group usw. Wenn man sich selber ein GUI mit meinem GUIBuilder zusammenklick es es am einfachsten im "Grouplayout" allerdings generiert das sehr sehr viel Code. Das Borderlayout hat mehrere Constanten, doch die müssen nicht zwingend verwendet werden(North,South, Center, West, East)? Verwendet ihr je nach Situation die Layouts oder kann ich sagen "ich mache alles mit dem Borderlayout und setze die Komponenten per "setBounds(int, int, int, int) an meine gewünschte stelle. Die Frage könnte man zusammenfassen als "Wie handel ich das am besten mit den Layouts?".
4. Frage -> OffTopic
Die ganzen Fragen tauchen auf weil mein erstes Programm praktisch jede Klasse über 1000 Codezeilen hat und mir Leute immer wieder sagen, dass 1000 Zeilen Code in einer Klasse ist nicht ideal und eher schlecht Programmiert sei. Da ich das Ziel habe später von Systemtechniker auf Javaprogrammierung im Beruf umzusteigen muss ich mir jetzt beim lernen eine "saubere" Programmierung anzugewöhnen. Gibt es insgesamt irgendwo eine art "Javaprogramming-Regelwerk" wo es ein paar Regeln gibt wie man den Code schreiben sollte?
Mein Programm funktioniert, aber eben, jemand der schon länger Javaprogrammiert hätte vermutlich nur die hälfte meines Codes schreiben müssen.
Gruss
Kneubi
Da ich mein letztes Tool mit einem GUIBilder ber Drag'n'Drop zusammengeklickt habe und der Code ja absolut untragbar aussieht habe ich mich nun weiter mit Swingtutorials beschäftigt.
Dabei geht es nun aktuell um Grundlegende Funktionsfragen wie man es "besser" löst...
Folgendene Javacode habe ich mit drei verschiedenen Tutorials erstellt:
Java:
package ch.kneubi89.testswing;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class testGUI extends JFrame implements ActionListener{
private JButton quitButton;
private JButton OKButton;
public testGUI() {
initGUI();
}
public final void initGUI() {
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(null);
JButton quitButton = new JButton("Quit");
this.quitButton = quitButton;
quitButton.setBounds(10, 10, 80, 30);
quitButton.addActionListener(this);
JButton OKButton = new JButton("OK");
this.OKButton = OKButton;
OKButton.setBounds(10, 50, 80, 30);
OKButton.addActionListener(this);
JButton OK2Button = new JButton("OK2");
OK2Button.setBounds(10, 90, 80, 30);
OK2Button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
JOptionPane.showMessageDialog(null, "test2");
}
});
panel.add(quitButton);
panel.add(OKButton);
panel.add(OK2Button);
setTitle("Sample GUI");
setSize(500,500);
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
testGUI inst = new testGUI();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == quitButton){
this.dispose();
}
if(e.getSource() == OKButton){
JOptionPane.showMessageDialog(null, "test");
}
}
}
1. Frage
Zum einen lese ich immer wieder dass "extends JFrame" eine mögliche Lösung sei, aber dies sei unsauber wenn man keine Überschreibungen macht. -> Sind hier von Methodenüberschreibungen der Klasse JFrame gemeint und warum ist dies unsauber?
Was ich leider nicht ganz kapiere, wie muss ich es denn machen ohne "extends JFrame"?
2. Frage
Ich habe hier zwei verschiedene Möglichkeiten gebaut ActionListener an die Componenten hinzuzufügen. Welcher Weg ist der "bessere/saubere"? Ich finde den beim "OK2Button" komplizierter / unübersichtlicher. Allerdings finde ich die Art unschön dass ich beim "OKButton" das Objekt in eine Variabel schreiben muss und dem panel zuordnen. Ansonsten kann ich keine "if-Abfrage auf den Button" machen. Muss der ActionListener immer per "Implements" der Klasse angehängt werden oder ist dies auch "unsauber" und man sollte es anders lösen?
3. Frage
Es gibt X verschiedene Layouts, Border, Flow, Grid, Group usw. Wenn man sich selber ein GUI mit meinem GUIBuilder zusammenklick es es am einfachsten im "Grouplayout" allerdings generiert das sehr sehr viel Code. Das Borderlayout hat mehrere Constanten, doch die müssen nicht zwingend verwendet werden(North,South, Center, West, East)? Verwendet ihr je nach Situation die Layouts oder kann ich sagen "ich mache alles mit dem Borderlayout und setze die Komponenten per "setBounds(int, int, int, int) an meine gewünschte stelle. Die Frage könnte man zusammenfassen als "Wie handel ich das am besten mit den Layouts?".
4. Frage -> OffTopic
Die ganzen Fragen tauchen auf weil mein erstes Programm praktisch jede Klasse über 1000 Codezeilen hat und mir Leute immer wieder sagen, dass 1000 Zeilen Code in einer Klasse ist nicht ideal und eher schlecht Programmiert sei. Da ich das Ziel habe später von Systemtechniker auf Javaprogrammierung im Beruf umzusteigen muss ich mir jetzt beim lernen eine "saubere" Programmierung anzugewöhnen. Gibt es insgesamt irgendwo eine art "Javaprogramming-Regelwerk" wo es ein paar Regeln gibt wie man den Code schreiben sollte?
Mein Programm funktioniert, aber eben, jemand der schon länger Javaprogrammiert hätte vermutlich nur die hälfte meines Codes schreiben müssen.
Gruss
Kneubi