Swing Prog in mehrere Klassen zerlegen

Status
Nicht offen für weitere Antworten.

Holgrich

Mitglied
Hallöchen

ich habe mit Swing ein Programm zu schrieben, dass u.a. eine Uhr anzeigen kann. Ich wollte das Programm in mehrere Klassen zerlegen, hier der Code:


Die main-Methode
Code:
import javax.swing.*;

public class Main
{		
	private static final long serialVersionUID = 1L;
	private JFrame _frame;
	
	public Main ()
	{
		_frame = new Aufbau(); 
		_frame.setDefaultCloseOperation(3);
		_frame.setVisible(true);	
	}
	
	public static void main( String args[] )
	{
		new Main();
	}
}

dazu die Klasse Aufbau
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Aufbau extends JFrame
{
	private JPopupMenu _popup;
	
	public Aufbau()
	{
		JMenuBar  menue     = new JMenuBar();
		JMenu     bedienung = new JMenu("Bedienung"); 		
		JMenuItem anzeige   = new JMenuItem("Anzeige");
		JMenuItem alarm     = new JMenuItem("Alarm");
		JMenuItem beenden   = new JMenuItem("Beenden");

                [...]

                menue.add(bedienung);
		menue.add(sekunden);
		menue.add(Box.createGlue());
		menue.add(hilfe);
	}

aber wenn ich es jetzt ausführe öffnet sich ein leeres Fenster. Weiß jmd warum?
 
S

SlaterB

Gast
weil du keine Elemente in das JFrame einfügst, oder poste/ benenne die entsprechenden Befehle

das menue hat beispielsweise keine Verbindung zum JFrame
 

diggaa1984

Top Contributor
läuft eigentlich so:

JFrame erzeugen
Panel erzeugen was du aufs JFrame packst (sonst siehst du immer nur die zuletzt geaddete komponente)
und alles was du nun brauchst auf das panel packen

Menu kannst du direkt mit JFrame-methode festlegen (setJMenuBar)

dann sollte das gehen

zB:
Code:
public void setup(String mainFrameName) {	
		mainFrame = new JFrame(mainFrameName);
		mainFrame.setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE);
		
		//create mainPanel with BorderLayout
		mainPanel = new JPanel(new BorderLayout(0,0));
		
		//create toolbarMenu
		mainPanel.add(setupToolbar(),BorderLayout.NORTH);
		
		//create cardPanel and add Cards
		cardPanel = new JPanel(new CardLayout());
		
		for (CardController c: cc) {
			c.initCard(cardPanel);
		}//for
		
		//add cardPanel
		mainPanel.add(cardPanel,BorderLayout.CENTER);
		
		//create statusbarPanel
		mainPanel.add(setupStatusbar(),BorderLayout.SOUTH);
		
		mainFrame.add(mainPanel); // >> Panel aufs Frame packen, als einzige Komponente <<
		
		//create menubar
		mainFrame.setJMenuBar(setupMenubar());
		
		mainFrame.pack();
		
		//centered on desktop
		java.awt.Rectangle maxBounds = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
		mainFrame.setLocation((maxBounds.width-mainFrame.getWidth())/2, 
						      (maxBounds.height-mainFrame.getHeight())/2);
		
		mainFrame.setVisible(true);
	}//init
 
S

SlaterB

Gast
genauer: setMenuBar() (edit: oh, schon gefunden bzw. wenn es setJMenuBar() gibt, dann ist das sicher besser ;) )

und um mögliche Folgefragen vorzugreifen: wenn immer noch nichts zu sehen ist, mehr Code posten,
idealerweise ein vollständiges Programm,

solange nix zu sehen ist, reicht übrigens EIN beliebiges Element, es müssen nicht 10 Menüs, 20 sonstige Elemente usw. gleichzeitig sein
 

mvitz

Top Contributor
Weiterhin würde ich
Code:
 _frame.setDefaultCloseOperation(3);

Ändern. Es gibt in der Klasse JFrame statische Variablen, die die Integerwerte unter einem Namen kapseln, z.B.

Code:
JFrame.EXIT_ON_CLOSE

Mit 3 können vermutlich die wenigsten etwas anfangen, wohingegen man bei EXIT_ON_CLOSE sofort weiß was passiert.

mfg
Michael
 

Holgrich

Mitglied
jo danke, dachte mir das ganze programm wäre zu unübersichtlich, deswegen hab ich den mittelteil rausgeschnitten. und es ist so umfangreich, weils ja eigentlich schon lief, nur das zerlegen in mehrere klassen hat wieder alles geschrottet.

noch eine frage vom swing-newbie: wenn ich jetzt das panel in einer extra klasse erstellen will funktioniert das dann so:

Code:
import java.text.SimpleDateFormat;
import javax.swing.*;

public class UhrAnsicht extends JComponent
{
	private JComponent _panel;
	
	public UhrAnsicht()
	{	
		_panel = new Digital(new SimpleDateFormat("HH:MM:SS"));
	}
}

(Digital ist ne selbstgeschrieben Klasse, die einfach nur die Zeit als Digitalanzeige, also als STring zurückgibt)
 

diggaa1984

Top Contributor
Digital ist ne selbstgeschrieben Klasse, die einfach nur die Zeit als Digitalanzeige, also als STring zurückgibt

da bestünde ja nicht unbedingt die nötigkeit, das diese Klasse von JComponent erbt ( was sich aus der Nutzung im code ergibt) ... du kannst die Anzeige von JComponent erben oder gleich von Panel und legst da n label drauf, was sich den wert aus der digitalklasse holt oder dergleichen.
 

Holgrich

Mitglied
ja mir gings mehr um die Frage, dass wenn ich ein JPanel auf mein JFrame packen will, kann ich dann ne Klasse erstellen, die "extends JComponent" bzw "extends JPanel" deklariert ist, davon in der main ein neues Objekt erstellen und das zu meinem Frame hinzufügen?
 

diggaa1984

Top Contributor
ja klar sieh mal mein code oben (nutze da zb auch methoden die JPanel zurückgeben), dann würde quasi stehen:

mainFrame.add(new HauptPanel(<parameter wenn nötig>));
 

Ebenius

Top Contributor
habi55 hat gesagt.:
Weiterhin würde ich
Code:
 _frame.setDefaultCloseOperation(3);

Ändern. Es gibt in der Klasse JFrame statische Variablen, die die Integerwerte unter einem Namen kapseln, z.B.

Code:
JFrame.EXIT_ON_CLOSE

:meld: Ähäm. Du meinst sicher das WindowConstants interface. Ansonsten hast Du natürlich recht.

Grüße, Ebenius
 

Landei

Top Contributor
Deine Digital-Klasse ist ziemlich sinnfrei. Entweder sie stellt ein JComponent bereit, das man dann irgendwo im JFrame einfügen kann, dann braucht Digital aber nicht JComponent zu überschreiben. Oder Digital ist wirklich eine JComponent, dann braucht sie den internen Panel nicht, sondern malt sich entweder selbst (durch Überschreiben von paintComponent oder Paint) bzw. leitet von einer bequemeren Swing-Klasse wie JLabel ab, und erweitert diese (z.B. durch automatisches Aktualisieren des Texts). Wenn du weißt, was du willst, helfe ich gern weiter...
 

mvitz

Top Contributor
Ebenius hat gesagt.:
habi55 hat gesagt.:
Weiterhin würde ich
Code:
 _frame.setDefaultCloseOperation(3);

Ändern. Es gibt in der Klasse JFrame statische Variablen, die die Integerwerte unter einem Namen kapseln, z.B.

Code:
JFrame.EXIT_ON_CLOSE

:meld: Ähäm. Du meinst sicher das WindowConstants interface. Ansonsten hast Du natürlich recht.

Grüße, Ebenius

Danke, dass wusste ich bisher nicht :D Weiß nur, dass ich die Variablen immer über JFrame setze, dass ja das Interface implementiert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
RalleYTN Swing JavaFX VideoPlayer in Swing einbetten. Ich komm nicht an die Dimension des Videos! AWT, Swing, JavaFX & SWT 0
T swing läuft nur beding flüssig AWT, Swing, JavaFX & SWT 1
A Sonderzeichen bei Swing AWT, Swing, JavaFX & SWT 3
L DoubleBuffering unter Swing AWT, Swing, JavaFX & SWT 0
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
N JavaFX Umstieg von Swing auf Java FX AWT, Swing, JavaFX & SWT 6
J GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Plugin oder eigenes Tool mit zB SWING AWT, Swing, JavaFX & SWT 2
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
Z Swing Swing: Elemente werden doppel/verschoben gezeichnet, sind teils unsichtbar etc... AWT, Swing, JavaFX & SWT 10
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
N JComboBox in JTable [Swing] -> totaler UI-Einsteiger AWT, Swing, JavaFX & SWT 3
T Swing Kompatibilitätsproblem zwischen Swing und JavaFX AWT, Swing, JavaFX & SWT 4
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben