Erste Schritte mit SWING

Status
Nicht offen für weitere Antworten.

simlmf

Mitglied
Hallo zusammen,
ich habe mich heut mal ein paar Stunden hingehockt und ne kleine MiniGUI "gecodet"
ich kenn mich da leider noch nicht aus mit Regeln und gutem Programmierstil, also wollte ich euch einfach mal meine Schnipsel posten. ausführbar sind sie und es funzt auch alles wie ich es will. nur wären verbesserungen gern gesehen.

gerade all diese JMenus und JMenuItems von Hand zu erzeugen sieht irgendwie seltsam aus.
naja. macht einfach mal n paar vernichtende kommentare dazu^^

mfg simon und vielen dank

Code:
package GUI;

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

public class GraphicalUserInterface extends JFrame implements ActionListener
{
	public void actionPerformed(ActionEvent e)
	{
		
	}
	
	public GraphicalUserInterface()
	{
		JFrame mainFrame = new JFrame("Kontaktverwaltung");		
		
		JMenuBar mainMenuBar = new JMenuBar();
		
		JMenu file = new JMenu ("File");
		JMenu edit = new JMenu ("Edit");
		JMenu search = new JMenu ("Search");
		JMenu view = new JMenu ("View");
		JMenu about = new JMenu ("About");
		
		JMenuItem newContact = new JMenuItem ("New Contact");
		JMenuItem save = new JMenuItem ("Save");
		JMenuItem close = new JMenuItem ("Close");
		JMenuItem editContact = new JMenuItem ("Edit Contact");
		JMenuItem deleteContact = new JMenuItem ("Delete Contact");
		JMenuItem searchContact = new JMenuItem ("Search Contact by");
		JMenuItem showDetails = new JMenuItem ("Show Details on/off");
		JMenuItem toggleRaster = new JMenuItem ("Toggle Raste on/Off");
		JMenuItem info = new JMenuItem ("Info about SIMON");
		
		mainFrame.setJMenuBar(mainMenuBar);
		mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainFrame.setSize(800, 600);
		mainFrame.setVisible(true);
		
		mainMenuBar.add(file);
		mainMenuBar.add(edit);
		mainMenuBar.add(search);
		mainMenuBar.add(view);
		mainMenuBar.add(about);
		
		edit.add(editContact);
		edit.add(deleteContact);
		search.add(searchContact);
		view.add(showDetails);
		view.add(toggleRaster);
		about.add(info);
		file.add(newContact);
		file.add(save);
		file.add(close);
		
		close.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				if(e.getActionCommand().equals("Close"))
				{
					System.out.println("Window Closed");
					dispose();
					System.exit(0);
				}
			}
		});
	}

	public static void main(String[] args)
	{
		GraphicalUserInterface frame = new GraphicalUserInterface();	
	}
}
 

Illuvatar

Top Contributor
Also zum Menü - das musst du eben irgendwann zusammenbauen, und dafür braucht man eben eine Liste an Codezeilen die recht repetitiv sind, wird man kaum ändern können.

Ansonsten kommt es mir relativ gut vor. Coding Conventions sind eingehalten, Variablennamen in Englisch, alles gut lesbar. Eine kleinere Anmerkung, die ich jetzt einfach noch in den Absatz mitreinpacke: setVisible ist meistens besser, erst ganz am Schluss zu machen. Sonst kriegt der User erst die unfertige Oberfläche zu sehen, die dann noch verändert werden muss, und manche Änderungen danach können dann auch nicht mehr richtig dargestellt werden (such mal im Forum nach "validate", diese Probleme gibts oft ;))

Was ich dann noch sagen will: das Ganze scheint ja zumindest kein ganz kleines Programm mehr zu werden. Bei sowas solltest du dir vorher erstmal überlegen, was für Klassen du denn alles brauchst. Das ist mir persönlich zwar auch der am wenigsten liebe Teil, aber er hilft enorm... Von deinem Code her denke ich zumindest, du solltest da in der Gegend von den ActionListenern nochmal überlegen. Anonyme Listener... sind zwar komfortabel, aber nicht immer optimal :) Und warum implementiert deine Hauptklasse denn ActionListener? Schau auch mal nach dem Stichwort "MVC".
 
S

SlaterB

Gast
die Leerzeichen bei "new JMenu ("File");" vor der ( stören,
macht das dein Formatter?

in jedem Fall nicht konsequent: "new JFrame("Kontaktverwaltung");"
 

Marco13

Top Contributor
Der Zweite Schritt könnte oder sollte vielleicht sein, das alles jetzt in eine Methode "createMenu" oder so zu packen :wink:
 
G

Gast

Gast
Und zu guter letzt würde ich das Programm explizit im Event Dispatcher Thread starten.

Code:
public static void main(String[] args){
   SwingUtilities.ionvokeLater(new Runnable(){
      public void run(){
         GraphicalUserInterface frame = new GraphicalUserInterface();
      }
   });
}
 

tobbbbi

Mitglied
Gast hat gesagt.:
Und zu guter letzt würde ich das Programm explizit im Event Dispatcher Thread starten.

Code:
public static void main(String[] args){
   SwingUtilities.ionvokeLater(new Runnable(){
      public void run(){
         GraphicalUserInterface frame = new GraphicalUserInterface();
      }
   });
}

Vielleicht könntest du bitte noch kurz dazu erklären, wozu man das braucht, ist mir bisher nämlich nicht klar geworden. Danke
 

0001001

Bekanntes Mitglied
Hanz einfach:

Wenn du eine Swing Anwendung hast, also eine mit GUI, dann läuft alles, was mit der GUI zu tun hat (Buttons zeichnen, Panels zeichnen, usw.) in einem dafür vorgesehenen Thread, dem Event Dispatcher Thread (EDT).

Durch den Aufruf oben stellst du sicher, dass die GUI Anwendung (das ist sie ja, da du JFrame erweiterst) in diesem EDT läuft. Das ist zwar auch ohne den Aufruf oben meist der Fall, kann aber u.U. auch mal nicht so sein und dann startet deine GUI nicht. Wildcard kann dir dazu glaub ich was erzählen =).
 

simlmf

Mitglied
SlaterB
BeitragVerfasst am: 15. 10. 2008, 19:06 Titel:
die Leerzeichen bei "new JMenu ("File");" vor der ( stören,
macht das dein Formatter?

in jedem Fall nicht konsequent: "new JFrame("Kontaktverwaltung");"

jo, da hab ich wohl was übersehen, tschuldige :)

Gast hat gesagt.:
Und zu guter letzt würde ich das Programm explizit im Event Dispatcher Thread starten.

Code:
public static void main(String[] args){
   SwingUtilities.ionvokeLater(new Runnable(){
      public void run(){
         GraphicalUserInterface frame = new GraphicalUserInterface();
      }
   });
}

vielen dank, das is durchaus ein guter einwand
Illuvatar
BeitragVerfasst am: 15. 10. 2008, 19:02 Titel:
Also zum Menü - das musst du eben irgendwann zusammenbauen, und dafür braucht man eben eine Liste an Codezeilen die recht repetitiv sind, wird man kaum ändern können.

Ansonsten kommt es mir relativ gut vor. Coding Conventions sind eingehalten, Variablennamen in Englisch, alles gut lesbar. Eine kleinere Anmerkung, die ich jetzt einfach noch in den Absatz mitreinpacke: setVisible ist meistens besser, erst ganz am Schluss zu machen. Sonst kriegt der User erst die unfertige Oberfläche zu sehen, die dann noch verändert werden muss, und manche Änderungen danach können dann auch nicht mehr richtig dargestellt werden (such mal im Forum nach "validate", diese Probleme gibts oft icon_wink.gif)

Was ich dann noch sagen will: das Ganze scheint ja zumindest kein ganz kleines Programm mehr zu werden. Bei sowas solltest du dir vorher erstmal überlegen, was für Klassen du denn alles brauchst. Das ist mir persönlich zwar auch der am wenigsten liebe Teil, aber er hilft enorm... Von deinem Code her denke ich zumindest, du solltest da in der Gegend von den ActionListenern nochmal überlegen. Anonyme Listener... sind zwar komfortabel, aber nicht immer optimal icon_smile.gif Und warum implementiert deine Hauptklasse denn ActionListener? Schau auch mal nach dem Stichwort "MVC".

vielen dank für die umfangreiche antwort. was das eventhandling angeht hab ich nur mal bissel rumprobiert. hab da ja noch net viel erfahrung.
was das mit den klassen angeht, das stimmt schon somal das projekt wirklich nicht ganz klein wird
die änderungen wurden soweit vorgenommen.


Vielen dank für eure mithilfe. ich werde soblad ich neuigkeiten habe, updaten.
mfg simon
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Erste Schritte mit Swing AWT, Swing, JavaFX & SWT 3
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M Swing Erste Schritte mit der GUI, viele Probleme AWT, Swing, JavaFX & SWT 36
M Erstellen eines Hilfe-Fenster bzw"Erste-Schritte" AWT, Swing, JavaFX & SWT 2
H JTable - erste Schritte und Machbarkeitsüberlegung AWT, Swing, JavaFX & SWT 8
8 Installation von SWT und erste Schritte AWT, Swing, JavaFX & SWT 3
M JavaFX TableView nur erste Zeile editable machen und gelb markieren AWT, Swing, JavaFX & SWT 0
R javafx erste application AWT, Swing, JavaFX & SWT 12
L Die erste Grafikprogrammierung AWT, Swing, JavaFX & SWT 1
I Erste Desktop Software - blutiger Anfänger AWT, Swing, JavaFX & SWT 4
N JavaFX Erste Versuche mit Data-Binding AWT, Swing, JavaFX & SWT 11
Kenan89 Java FX GUI Hilfe für erste Java FX App AWT, Swing, JavaFX & SWT 8
J Das erste Projekt und ein Haufen von Fragen. Der SudokuReader. AWT, Swing, JavaFX & SWT 4
D Erste Knoten des JTrees bei Start offen AWT, Swing, JavaFX & SWT 8
P Erste Versuche einer Grafischen Oberfläche AWT, Swing, JavaFX & SWT 8
H JTree - nach Auswahl aus JFileChooser wird nur der erste Knoten angezeigt AWT, Swing, JavaFX & SWT 3
dl85hej meine erste Oberfläche AWT, Swing, JavaFX & SWT 3
E JTable nur die erste Spalte auswählbar? AWT, Swing, JavaFX & SWT 4
G JTable erste zeile fixieren wie in excel? AWT, Swing, JavaFX & SWT 3
B JTable erste Zeile aktiv AWT, Swing, JavaFX & SWT 6
L Erste Spalte eines JTables soll nicht editierbar sein. AWT, Swing, JavaFX & SWT 7
S Projekt: Meisterschaft - Abspeichern bereits gemachter Schritte AWT, Swing, JavaFX & SWT 2
F Schritte AWT, Swing, JavaFX & SWT 3
XWing Jave swing overly benutzten. AWT, Swing, JavaFX & SWT 3
J Anzeige ID und Markierung für Knoten in Eclipse & Swing AWT, Swing, JavaFX & SWT 4
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
K eigener button in swing AWT, Swing, JavaFX & SWT 3
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
windl Bufferstrategy in Swing nachstellen AWT, Swing, JavaFX & SWT 0
M Kamera in Java Swing einbinden AWT, Swing, JavaFX & SWT 4
Z Swing Swing und die Progressbar AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen


Oben