Swing Frage zum aufbau eines Programms

Status
Nicht offen für weitere Antworten.

d3x84

Mitglied
Hi,
Ich möchte ein Fenster mit Menubar etc umsetzen.
Ich möchte jedoch nicht erst in Main zuweisen wie das ganze auszusehen hat,
sondern quasi alles vorher fest zuweisen und dann es nur noch aufrufen.
Kann ich das so umsetzen? Die meisten beispiele die ich bisher gelesen habe,
gehen so vor das die Fensterklassen alle geschrieben werden und dann in main
die zuweisungen kommen du bist x,y groß etc.
Wie setze ich das vom aufbau der Klassen am besten um?

rudimentä rdargestellt hatte ich mir das etwa so:

Klasse des Programms {

Klasse für das Hauptfenster {
ActionListener {
blabla
}
}
Main {
fenster wird aufgerufen();
}
}

Wie setze ich es nun am besten um so das ich hier die menubar menuitems etc
unterbekomme?
soll/muss ich das in die klasse des hauptfenster packen,
oder muss ich das innerhalb der hauptklasse des programms machen?
wenn ja wie?

danke für die hilfe =)
 

hdi

Top Contributor
müssen tust du nix, wo der Code steht ist egal, wichtig ist dass die Reihenfolge gleich bleibt. Der einzige Unterschied ob innerhalb der Frame-Klasse oder außerhalb ist, dass du außerhalb frame.whatever machst, und im Konstruktor des Frames nur whatever.

... ich würde sich das Fenster selbst zusammenbauen lassen, also alles in den Konstruktor deiner Klasse extends JFrame.

also bei mir sieht das immer so aus:

Java:
public class MyFrame extends JFrame {

	public MyFrame(String title){
		super(title);

		// create components
		JMenuBar bar = new...
		JPanel p = new..
		// usw
		
		// set component sizes
		bar.setPreferredSize(new Dimension(100,20));
		p.setPreferredSize(...)
		// usw
		
		// add components
		setLayout(new BorderLayout());
		add(bar,BorderLayout.NORTH);
		add(p,BorderLayout.SOUTH);
		// usw
		
		// pack & center
		pack();
		setLocationRelativeTo(null);
		
		// various settings
		// zB:
		setResizable(false);
		// o.ä.
		
	}
}

Je nachdem wie komplex aber deine Komponenten sind, kannst du sie auslagern. Wenn zB ein ActionListener von irgendeinem Knopf im Menü von keiner anderen Komponente abhängt, kannst du dieses Menu auch in eine extra Klasse packen wo dann auch der Listener ist usw.

Aber eine Erfahrung hab ich gemacht: Setze Größen niemals in den Konstruktoren von den Komponenten, sondern immer alles im Frame. Weil da hast du dann den Überblick wie groß alles ist, und weisst auch dass nur hier irgendwelche Größen gesetzt werden.
Ist aber nur meine erfahrung, kein Anspruch auf "gutes Coding" oder so ;)

... ja und in deiner Haupt-Klasse, also der main-Methode, schreibst du nur:

Java:
EventQueue.invokeLater(new Runnable(){
			@Override
			public void run() {
				new MyFrame("Mein Programm").setVisible(true);
			}
		});

Das ganze EventQueue-Zeugs was dir wahrscheinlich spanisch vorkommt, "macht man halt so", ohne jetzt in große Erklärungen auszuschweifen, darum geht es ja hier grad nicht. Merk dir einfach dass du ein Fenster immer so anzeigen solltes.
 
Zuletzt bearbeitet:

d3x84

Mitglied
okay so hab ich schon wesentlich mehr überblick =)

bei mir wäre das dann wohl am besten so, dass ich beim aufruf von div menüpunkten natürlich auhc andere fenster geöffnet werden.

also würd ich für jedes fenster eine frameklasse machen mit den entsprechenden anweisungen wie es auszusehen hat und was es tut...

und im optimalfall muss ich dann wohl nur noch in main das hauptfenster aufrufen und gut ist... ^^
 

hdi

Top Contributor
Genau, bis auf eine Sache: Man sollte immer nur 1 Frame anzeigen lassen. Für weitere Fenster, zB beim Klick auf Menü-Buttons, solltest du die Klasse JDialog verwenden.
(Das ist ein Fenster ohne Eintrag in der Taskleiste, und unterscheidet sich intern bestimmt auch noch in anderen Punkten von einem Frame, was der Grund ist, dass man eben immer nur 1 Frame haben sollte)
 

d3x84

Mitglied
ok ich habs eben mal verscuht in etwa fürn anfang zu basteln...

Java:
package WalletTool;

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

public class WalletTool {
	
	public class MainWindow extends JFrame {
		//Konstruktor MainWindow
		public MainWindow(String title) {
			
			super(title);
			JMenuBar menubar = new JMenuBar();
			
			
		}
	}
	
	public static void main(String[] args) {
		new MainWindow("Hallotest").setVisible(true);
	}
}

aber wie ihr bestimmt seht kommen hier diverse fehler z.B. weil ich wohl das fenster nicht korrekt aufrufe etc. ich bin noch recht verwirrt in der javawelt =)
ich komm eigentlcih aus dem php/c bereich =)

das problem ist ich weiss nicht genau wieso die fehler auftauchen ^^

Beim aufruf des fensters schmeißt er mir "no enclosign instance of type WalletTool is accessible"

will er mir damit sagen das ich noch keine instanz erstellt habe?
wenn ja wo muss ich sie erstellen?

Bzw was mir ecplise auch noch sagt:

Multiple markers at this line
- The serializable class MainWindow does not declare a static final serialVersionUID field of
type long
- Breakpoint:WalletTool$MainWindow
- The serializable class MainWindow does not declare a static final serialVersionUID field of
type long

EDIT:

so sollte es eher aussehen =)

Java:
package WalletTool;

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

public class WalletTool {
	
	public static class MainWindow extends JFrame {

		//Konstruktor MainWindow
		public MainWindow(String title) {
			
			super(title);
			JMenuBar menubar = new JMenuBar();
			setLayout(new BorderLayout());
			add(menubar,BorderLayout.NORTH);
			
			
		} 
	}
	
	public static void main(String[] args) {
		new MainWindow("Test").setVisible(true);
	}
}
 
Zuletzt bearbeitet:

d3x84

Mitglied
so ich hab an meinem programmchen weitergebastelt =)

allerdings weiss ich nicht genau wie ich am besten nun den / die action listener einbaue...

ist es besser wenn ich für das menu für jeden punkt einzeln einen setze
oder am besten für das ganze Fenster aufeinmal?

brauche ein bischen hilfe wie das am besten auszusehen hat...

sollte ich auch alle Window Listener mit einbaun oder ist das nicht nötig?
habe diverse code beispiele gesehen, woviele leute für jeden status
jeweils ein listener einbaun

hier das beispiel aus der java insel...

Java:
public abstract class WindowAdapter   implements WindowListener, WindowStateListener, WindowFocusListener {
public void windowOpened( WindowEvent e ) { }
public void windowClosing( WindowEvent e ) { }
public void windowClosed( WindowEvent e ) { }
public void windowIconified( WindowEvent e ) { }
public void windowDeiconified( WindowEvent e ) { }
public void windowActivated( WindowEvent e ) { }
public void windowDeactivated( WindowEvent e ) { }
public void windowStateChanged( WindowEvent e ) { }
public void windowGainedFocus( WindowEvent e ) { }
public void windowLostFocus( WindowEvent e ) { } }

weiss aber nicht genau wie ich die window listener und die für die menüpunkte nötigen actionlistener / actionperformed am besten in mein code mit einbaue =(

danke für die hilfe ^^

Java:
package WalletTool;

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

public class WalletTool {


	public static class MainWindow extends JFrame {
		private static final long serialVersionUID = 3595405672999869797L;
		
		//Konstruktor MainWindow
		public MainWindow(final String title) {
			super(title);
			// Konstante Werte des Gesamten Fensters
			setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			setSize(800,600);
						
			// Menubar Erzeugen
			final JMenuBar menubar = new JMenuBar();
			
			// Menupunkte Erzeugen
			final JMenu file = new JMenu("File");
			final JMenu help = new JMenu("Help");
			
			// Untermenupunkte File Anlegen
			final JMenuItem character = new JMenuItem("Add Charakter");
			final JMenuItem save = new JMenuItem("Save Settings");
			final JMenuItem restore = new JMenuItem("Restore Settings");
			final JMenuItem quit = new JMenuItem("Quit");
			
			//Untermenupunkte Help Anlegen
			final JMenuItem info = new JMenuItem("Info");
									
			//Hauptmenupunkte Aufnehmen
			menubar.add(file);
			menubar.add(help);
			
			//Untermenupunkte von File Aufnehmen
			file.add(character);
			file.add(save);
			file.add(restore);
			file.addSeparator();
			file.add(quit);
			
			//Untermenupunkt von Help Aufnehmen
			help.add(info);
			
			//Shortcuts
			character.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_DOWN_MASK ));
			save.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK ));
			restore.setAccelerator(KeyStroke.getKeyStroke('R', InputEvent.CTRL_DOWN_MASK ));
			quit.setAccelerator(KeyStroke.getKeyStroke('Q', InputEvent.CTRL_DOWN_MASK ));
			info.setAccelerator(KeyStroke.getKeyStroke('I',InputEvent.CTRL_DOWN_MASK));

			// Layout
			setLayout(new BorderLayout());
			add(menubar,BorderLayout.NORTH);
		
		}
		
	}
	
	public static void main(String[] args) {
		new MainWindow("ThisisMyTool").setVisible(true);
	}
}
EDIT:

Wenn ich Code wie

Java:
quit.addWindowListener(System.exit(0));

einfüge gibt er mir eine fehlermeldung aus

"The method addWindowListener(void) is undefined for the type JMenuItem"

Auch wenn ich ne eigene klasse vorher mache die System.exit(0) auslöst geht das nicht =/
 
Zuletzt bearbeitet:

hdi

Top Contributor
Mal langsam, du verrennst dich grad in syntaktischen vollkommen ungültigen Code-Matsch ;)

1) WindowListener kannst du nicht an ein Menü-Item hängen, immerhin ist ein Menü-Item auch kein Window. Du kannst zB einen ActionListener dran hängen

2) Solange die Actions dieser Menü-Items nicht irgendwo anders im Programm auch benötigt werden, geht es eig. immer an schnellsten und übersichtlichsten, wenn du die direkt beim Erstellen der Items dranhängst:

Java:
myItem.addActionListener(new ActionListener(){
     @Override
     public void actionPerformed(ActionEvent e){
               // dein code
     }
});

Sowas nennt man eine anonyme Klasse.
Aber... ich würde dir raten, dich erstmal ein bisschen mehr mit den Basics zu beschäftigen, dazu gehört zu lernen, wie man die API benutzt:

Java Platform SE 6

Links ist eine Liste aller Klassen, mit all ihren Eigenschaften und Methoden. Bei "JMenuItem" wirst du nun sehen, dass es dafür keine Methode á la addWindowListener gibt.

Bei JFrame zB gibt es die, aber wenn du sie dir anschaust, wirst du auch wissen, warum sowas wie

Java:
addWindowListener(System.exit(0));

kein gültiger Java-Code ist. Beschäftige dich also erstmal mit der API, wenn du eine gewisse Klasse benutzt. Schau dir an welche Methoden es dafür gibt und wie man sie benutzt.

lg
 

d3x84

Mitglied
Ok mittlerweile bin ich etwas weiter =)


Java:
package WalletTool;

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

public class WalletTool {
	@SuppressWarnings("serial")
	public static class QuitWindow extends JDialog {
		public QuitWindow(final String title) {

			super(title);
			setSize(300,100);
			setLayout(new BorderLayout());
			//Buttons erzeugen
			final  JButton ja = new JButton("Yes");
			final  JButton nein = new JButton("No");
			final  JLabel text = new JLabel("Do you want to Quit?");
			//Button aufnehmen
			add(ja,BorderLayout.SOUTH);
			add(nein,BorderLayout.SOUTH);
			add(text,BorderLayout.NORTH);
			
			ja.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					System.exit(0);
				}}
			);
			nein.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					dispose();
				}}
			);
			
		}

	
	}
	
	
	public static class MainWindow extends JFrame {
		private static final long serialVersionUID = 3595405672999869797L;

		//Konstruktor MainWindow
		public MainWindow(final String title) {
			super(title);
			// Konstante Werte des Gesamten Fensters
			setSize(800,600);
						
			// Menubar Erzeugen
			final JMenuBar menubar = new JMenuBar();
			
			// Menupunkte Erzeugen
			final JMenu file = new JMenu("File");
			final JMenu help = new JMenu("Help");
			
			// Untermenupunkte File Anlegen
			final JMenuItem character = new JMenuItem("Add Charakter");
			final JMenuItem save = new JMenuItem("Save Settings");
			final JMenuItem restore = new JMenuItem("Restore Settings");
			final JMenuItem quit = new JMenuItem("Quit");
			
			//Untermenupunkte Help Anlegen
			final JMenuItem info = new JMenuItem("Info");
									
			//Hauptmenupunkte Aufnehmen
			menubar.add(file);
			menubar.add(help);
			
			//Untermenupunkte von File Aufnehmen
			file.add(character);
			file.add(save);
			file.add(restore);
			file.addSeparator();
			file.add(quit);
			
			//Untermenupunkt von Help Aufnehmen
			help.add(info);
			
			//Shortcuts
			character.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_DOWN_MASK ));
			save.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK ));
			restore.setAccelerator(KeyStroke.getKeyStroke('R', InputEvent.CTRL_DOWN_MASK ));
			quit.setAccelerator(KeyStroke.getKeyStroke('Q', InputEvent.CTRL_DOWN_MASK ));
			info.setAccelerator(KeyStroke.getKeyStroke('I',InputEvent.CTRL_DOWN_MASK));

			// Layout
			setLayout(new BorderLayout());
			add(menubar,BorderLayout.NORTH);
			// Die Listener			
			quit.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					new QuitWindow("Do you really want to Quit?").setVisible(true);
				}}
			);
			
		}
		
	}
	
	public static void main(String[] args) {
		new MainWindow("Jayton Dowerty's Eve-Online Tool 1.0").setVisible(true);
	}
}

Wie bekomme ich es aber hin das der Dialog auch beim Drücken auf "X" angezeigt wird?
Ecplipse meldet mir weiterhin in der klasse "QuitWindow" bei super(title);
den Fehler:
Multiple markers at this line
- The constructor JDialog(String) is undefined
- Line breakpoint:WalletTool$QuitWindow [line: 12] - QuitWindow
 

hdi

Top Contributor
super() ruft den Konstruktor der Klasse auf, von der du erbst. Also den Konstruktor von JDialog. In der API siehst du, dass es für diese Klasse keinen Konstruktor gibt, der einen String erwartet.

Statt dessen kannst du den Titel per setTitle(title) setzen.

Damit der Dialog beim Klicken auf das "X" angezeigt wird, musst du zwei Dinge tun:

1) Die defaultmässige Exit-Aktion vom JFrame löschen:
Java:
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

2) einen eigenen WindowAdapter/Listener dranhängen:

Java:
frame.addWindowListener(new WindowAdapter()){
      // hier die windowClosing-Methode überschreiben.
}
 

d3x84

Mitglied
aaaaah ^^
ok jetzt funktioniert es =)

Das Fenster wird wunderbar geöffnet, nur kann ich nicht auf "ja" klicken
weil das Layout nicht stimmt.
Ich versuche mal mir das mit GridbagLayout anzupassen =)
 

hdi

Top Contributor
Jo, kannste machen. Aber nimm zur Kenntnis dass das GridbagLayout das komplizierteste Layout in Java ist. Für die ersten GUI-Anwendungen solltest du auch alles mit anderen Layouts hinkriegen.
Eigentlich kann man mit Kombination aus BorderLayout, FlowLayout und BoxLayout schon das allermeiste machen, ohne sich mit Contraints rumschlagen zu müssen.

...womit ich dich jetzt aber nicht davon abbringen will, das GridBagLayout zu lernen.
(Ich sollte das auch mal tun lol)
 

d3x84

Mitglied
ok ich hab das schon für mich gemerkt danke =))))
hab das bei so nem einfachen dialog einfach alles selbst gesetzt mit dem null Layout...

ne andere Frage hab ich da noch...

Wie bekomme ich es hin das mein Frame tatsächlich in der Mitte des Bildschirms angezeigt wird?

mit

Java:
setLocationRelativeTo(null);

wird die obere linke ecke des Frames ins zentrum gesetzt.
Bei größeren Fenstern ist das aber eher Nachteilig da der untere teil meines
fensters dann verschwindet...

dann möchte ich, dass das mein QuitWindow immer in der mitte des Frames angezeigt wird. Habe schon viel gegoogelt und diverse arten von getxyz(); gefunden.
weiss das aber nicht recht einzusetzen.

z.B. möchte ich eine eigene kalsse zum fenster zentrieren erstellen die dann
2 int werte zurück gibt. diese möchte ich für setPosition(x,y); nutzen

etwa so:

Java:
	public int centerWindow() {
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
		int x = (d.width - getSize().width) / 2; 
		int y = (d.height - getSize().height) / 2;
		return (x+y);
	}


danke für die hilfe =)


PS:
ich bekomm immer die fehlermeldung:

"The method getSize() is undefined for the type WalletTool"
ich nehm mal an weil ich einfach noch keine entsprechende "biblothek" importiert habe...
wo finde ich dies?

danke danke danke =))


EDIT:

nach etwas probieren bin ich nun soweit

Java:
	public static class MainWindow extends JFrame {
		private static final long serialVersionUID = 3595405672999869797L;
		int xwindowpos,ywindowpos;
		
		   public int centerWindow(int xwindowpos , int ywindowpos) {
			   
		        Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
		        xwindowpos = (d.width - getSize().width) / 2; 
		        ywindowpos = (d.height - getSize().height) / 2;
		        return (xwindowpos+ywindowpos);
		    }
		   
		//Konstruktor MainWindow
		public MainWindow(final String title) {
			super(title);
			// Konstante Werte des Gesamten Fensters
			
			setPosition(xwindowpos,ywindowpos);
			setSize(800,600);
......

allerdings bekomme ich beim aufruf setPosition den Fehler:

"The method setPosition(int, int) is undefined for the type WalletTool.MainWindow"
 
Zuletzt bearbeitet:

hdi

Top Contributor
Zum Zentrieren des Frames: setLocationRelativeTo(null) muss aufgerufen werden, nachdem du pack() aufgerufen hast oder die Grösse gesetzt hast.

Zum Zentrieren des dialogs auf dem Frame geht das ähnlich:
setLocationRelativeTo(myframe)

Außerdem gibt es für JDialogs Konstruktoren, die auch ein JFrame annehmen. Das solltest du auch nutzen, damit du keinen Dialog erstellst der plötzloch "verschwindet" weil der User auf seinem Desktop Fesnter rumschiebt oder schliesst usw.
 

d3x84

Mitglied
hmm ok das mit dem zentrieren funktioniert jetzt =)
ich hatte es seltsamerweise schonmal so probiert, aber ich hatte ne
fehlermeldung ausgespunkt bekommen....

naja wie auch immer ^^

ich hab den Quit dialog nun modal gesetzt aber dank deinem hinweise habe ich mal
rumprobiert und wenn der benutzer aus dem fenster klickt und in der taskleiste das programm wieder aufruft, wird tatsächlich nur der modale dialog aufgerufen
aber nicht das dahinter liegende frame ^^

gibts den iwo ne gute referenz zu setLocationRelativeTo?
die javadocs sind da etwas spärlich die geben leider nicht an was man damit so alles machen kann.
oder gibts ne seite mit tips zu so situationen wie man da vorbeugen kann,
das ein "wird nicht angezeigt" fehler vermieden werden kann?

ne weitere frage?

wenn ich weitere fenster(frames) nun einfüge sollte ich die eher in ne neue datei machen oder kann ich die mit da rein machen?
ich denke es werden sicher noch 2,3 frames und einige dialoge...
desweiteren muss ja dann auch noch die eigentliche "intelligenz" des programms rein...
könnte etwas unübersichtlich werden...

ich weiss das is geschmackssache aber iwann wirds ja dann sehr unleserlich...
 

Ariol

Top Contributor
ok ich hab das schon für mich gemerkt danke =))))
hab das bei so nem einfachen dialog einfach alles selbst gesetzt mit dem null Layout...

ne andere Frage hab ich da noch...

Wie bekomme ich es hin das mein Frame tatsächlich in der Mitte des Bildschirms angezeigt wird?

mit

Java:
setLocationRelativeTo(null);

wird die obere linke ecke des Frames ins zentrum gesetzt.
Bei größeren Fenstern ist das aber eher Nachteilig da der untere teil meines
fensters dann verschwindet...

setLocationRelativeTo(null) funktioniert nur, wenn es zwischen der pack() und der setVisible(true)-Methode aufgerufen wird. pack() fehlt aber ganz bei dir.

dann möchte ich, dass das mein QuitWindow immer in der mitte des Frames angezeigt wird. Habe schon viel gegoogelt und diverse arten von getxyz(); gefunden.
weiss das aber nicht recht einzusetzen.

z.B. möchte ich eine eigene kalsse zum fenster zentrieren erstellen die dann
2 int werte zurück gibt. diese möchte ich für setPosition(x,y); nutzen

etwa so:

Java:
	public int centerWindow() {
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
		int x = (d.width - getSize().width) / 2; 
		int y = (d.height - getSize().height) / 2;
		return x,y;
	}


danke für die hilfe =)

Java:
	public Point getWindowCenterPosition() {
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
		int x = (d.width - getSize().width) / 2; 
		int y = (d.height - getSize().height) / 2;
		return new Point(x,y);
	}

Und dann
Java:
setLocation(getWindowCenterPosition());

Sollte mit der Lösung oben aber nicht nötig sein.

PS:
ich bekomm immer die fehlermeldung:

"The method getSize() is undefined for the type WalletTool"
ich nehm mal an weil ich einfach noch keine entsprechende "biblothek" importiert habe...
wo finde ich dies?

danke danke danke =))

WalletTool ist weder ein JFrame noch ein JDialog (keine JComponent). Deshalb hat WalletTool keine entsprechende Methode.

Ach ja: Namen für Variablen oder Klassen sollten darauf schließen lassen, von was abgeleitet wird/was sie sind. Mit "yes" und "no" kannst du ganz schnell ganz unglücklich werden.

Ich hab deinen Code mal so umgeschrieben, wie ich gemacht hätte - natürlich ausgehend von deiner Vorarbeit:

Java:
package WalletTool;

public class WalletTool
{
	public static void main(String[] args)
	{
		new MainFrame("Jayton Dowerty's Eve-Online Tool 1.0");
	}
}

Java:
package WalletTool;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

public class MainFrame extends JFrame
{
	private static final long	serialVersionUID	= 3595405672999869797L;

	private static final String	CHARACTER_COMMAND	= "CHARACTER";

	private static final String	SAVE_COMMAND		= "SAVE";

	private static final String	RESTORE_COMMAND		= "RESTORE";

	private static final String	QUIT_COMMAND		= "QUIT";

	private static final String	INFO_COMMAND		= "INFO";

	// Menubar Erzeugen
	private final JMenuBar		menubar				= new JMenuBar();

	// Menupunkte Erzeugen
	private final JMenu			fileMenu			= new JMenu("File");
	private final JMenu			helpMenu			= new JMenu("Help");

	// Untermenupunkte File Anlegen
	private final JMenuItem		characterMenuItem	= new JMenuItem("Add Charakter");
	private final JMenuItem		saveMenuItem		= new JMenuItem("Save Settings");
	private final JMenuItem		restoreMenuItem		= new JMenuItem("Restore Settings");
	private final JMenuItem		quitMenuItem		= new JMenuItem("Quit");

	// Untermenupunkte Help Anlegen
	private final JMenuItem		infoMenuItem		= new JMenuItem("Info");

	// Konstruktor MainWindow
	public MainFrame(final String title)
	{
		super(title);
		// Konstante Werte des Gesamten Fensters
		setPreferredSize(new Dimension(800, 600));

		initComponents();
		addComponents();
		pack();
		
		setLocationRelativeTo(null);
		setVisible(true);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	private void addComponents()
	{
		// Untermenupunkte von File Aufnehmen
		fileMenu.add(characterMenuItem);
		fileMenu.add(saveMenuItem);
		fileMenu.add(restoreMenuItem);
		fileMenu.addSeparator();
		fileMenu.add(quitMenuItem);

		// Untermenupunkt von Help Aufnehmen
		helpMenu.add(infoMenuItem);

		// Hauptmenupunkte Aufnehmen
		menubar.add(fileMenu);
		menubar.add(helpMenu);

		// Layout
		setLayout(new BorderLayout());
		add(menubar, BorderLayout.NORTH);
	}

	private void initComponents()
	{
		MainWindowActionListener actionListener = new MainWindowActionListener(this);

		characterMenuItem.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_DOWN_MASK));
		characterMenuItem.setActionCommand(CHARACTER_COMMAND);
		characterMenuItem.addActionListener(actionListener);

		saveMenuItem.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK));
		saveMenuItem.setActionCommand(SAVE_COMMAND);
		saveMenuItem.addActionListener(actionListener);

		restoreMenuItem.setAccelerator(KeyStroke.getKeyStroke('R', InputEvent.CTRL_DOWN_MASK));
		restoreMenuItem.setActionCommand(RESTORE_COMMAND);
		restoreMenuItem.addActionListener(actionListener);

		quitMenuItem.setAccelerator(KeyStroke.getKeyStroke('Q', InputEvent.CTRL_DOWN_MASK));
		quitMenuItem.setActionCommand(QUIT_COMMAND);
		quitMenuItem.addActionListener(actionListener);

		infoMenuItem.setAccelerator(KeyStroke.getKeyStroke('I', InputEvent.CTRL_DOWN_MASK));
		infoMenuItem.setActionCommand(INFO_COMMAND);
		infoMenuItem.addActionListener(actionListener);
	}

	private class MainWindowActionListener implements ActionListener
	{		
		private MainFrame	mainFrame;

		public MainWindowActionListener(MainFrame frame)
		{
			this.mainFrame = frame;
		}

		public void actionPerformed(ActionEvent e)
		{
			if (e.getActionCommand().equals(QUIT_COMMAND))
			{
				new QuitDialog(mainFrame,"Do you really want to Quit?",true);
			}
			// TODO - other commands
		}
	}

}

Java:
package WalletTool;

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

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class QuitDialog extends JDialog
{
	
	private static final long	serialVersionUID	= 4106507525590445087L;
	
	private static final String	YES_COMMAND	= "YES";
	private static final String	NO_COMMAND	= "NO";

	// Buttons erzeugen
	private final JButton		yesButton	= new JButton("Yes");
	private final JButton		noButton	= new JButton("No");
	private final JLabel		textLabel	= new JLabel("Do you want to Quit?");

	private MainFrame	mainFrame; //brauchst du evtl später nochmal

	public QuitDialog(final MainFrame owner,final String title, boolean modal)
	{

		super(owner,title,modal);
		
		this.mainFrame = owner;
		
		setSize(new Dimension(300, 100));

		initComponents();
		addComponents();

		setLocationRelativeTo(owner);
		setVisible(true);
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
	}

	private void initComponents()
	{
		QuitWindowActionListener actionListener = new QuitWindowActionListener(this);

		yesButton.setActionCommand(YES_COMMAND);
		yesButton.addActionListener(actionListener);

		noButton.setActionCommand(NO_COMMAND);
		noButton.addActionListener(actionListener);
	}

	private void addComponents()
	{
		setLayout(new GridLayout(2,1));
		add(textLabel);
		
		JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new GridLayout(1,2));
		buttonPanel.add(yesButton);
		buttonPanel.add(noButton);
		add(buttonPanel);
	}

	private class QuitWindowActionListener implements ActionListener
	{

		private QuitDialog	quitDialog;
		
		public QuitWindowActionListener(QuitDialog dialog)
		{
			this.quitDialog = dialog;
		}

		public void actionPerformed(ActionEvent e)
		{
			if (e.getActionCommand().equals(YES_COMMAND))
			{
				System.exit(0);
			}
			else if (e.getActionCommand().equals(NO_COMMAND))
			{
				quitDialog.dispose();
			}

		}

	}
}

Ich hab das ganze in mehrere Dateien aufgeteilt - so bleiben diese übersichtlicher.
Private Klassen sind eher für kleine Sachen wie Listener "gedacht".

EDIT: Den "QuitWindowActionListener" solltest du noch umbenennen, damit er zu Klassennamen passt - Hab ich jetzt vergessen. Sorry.
 
Zuletzt bearbeitet:

hdi

Top Contributor
Nochmal zu den Problem, dass nach Wegklicken des Fensters nur noch der Dialog, aber nicht mehr das Fenster zu sehen ist: Ich habe ja gesagt, dass es dafür spezielle Konstruktoren in der JDialog-Klasse gibt, die ein JFrame annehmen.
Wenn du so einen aufrufst, und ihm dein Haupt-Fenster mitgibst, dann klebt er sich das Fenster sozusagen an sich ran. D.h. das Fenster wird nach dem Minimieren dann auch wieder auftauchen.
 

d3x84

Mitglied
EDIT:
Ich hab mein Post nochmal korrigiert ^^
Hat sich so einiges erledigt...

Deine Version ist wesentlich logischer aufgebaut =)
Ich muss mich da allerdings erstmal reinfinden ^^
Davon mal abgesehen muss ich dann nochmal einbaun das beim WindowClosing
(aufs X drücken) auch der dialog erscheint.


bei
Java:
this.mainFrame = owner;
wie genau funktioniert das hier?
(zeiger warn mir schon immer schleierhaft...)

Java:
private QuitDialog  quitDialog;
verstehe hier auch noch net ganz wie das arbeitet
ich sehe das du das weiter unten nutzt für

Java:
            else if (e.getActionCommand().equals(NO_COMMAND))
            {
                quitDialog.dispose();
            }

sry das ich als nachfrage... hab schon 3 bücher gelesen bzw nutze diese auch als nachschlagewerk aber das dipl informatiker chinesich ist teilweise sehr anstregend...
 
Zuletzt bearbeitet:

d3x84

Mitglied
Nochmal zu den Problem, dass nach Wegklicken des Fensters nur noch der Dialog, aber nicht mehr das Fenster zu sehen ist: Ich habe ja gesagt, dass es dafür spezielle Konstruktoren in der JDialog-Klasse gibt, die ein JFrame annehmen.
Wenn du so einen aufrufst, und ihm dein Haupt-Fenster mitgibst, dann klebt er sich das Fenster sozusagen an sich ran. D.h. das Fenster wird nach dem Minimieren dann auch wieder auftauchen.

aaaah =)
danke jetzt hab ichs verstanden =)

dein vorredner hat dies hier gelöst nehm ich mal an =)

Java:
  public QuitDialog(final MainFrame owner,final String title, boolean modal)
    {
    	super(owner,title,modal);
//hier erbt QuitDialog durch Super. Dadurch hängt das Fenster am Dialog?        
        this.mainFrame = owner;

wie das this.mainfrage genau arbeitet weiss ich leider immernoch nicht ganz.
ich bin durch den zeiger verwirrt ^^
 
Zuletzt bearbeitet:

Ariol

Top Contributor
bei new MainFrame bekomme ich den/die Fehler:

Multiple markers at this line
- The constructor MainFrame(String) is
undefined
- Line breakpoint:WalletTool [line: 7] - main
(String[])

diese line breakpoint hinweise stehn da öfter was bedeuten die?
wieso ist der konstruktor nun nicht definiert? bzw warum muss er es zwingend sein?!
line breakpoint ist zum debuggen der Anwendung. An der Stelle hält der Debugger an.
Einfach doppelt auf den Punkt ganz links klicken. (Links neben der Zeilennummer).

Ich vermute du hast die Klasse nicht korrekt kopiert. Bzw. du hast noch deine alte statische Klasse drin.

Java:
private MainFrame mainFrame; //brauchst du evtl später nochmal
// hier gibt er mir die meldung ... is never read locally soll ich das auskommentieren?
 
    public QuitDialog(final MainFrame owner,final String title, boolean modal)
    {
    	super(owner,title,modal);
//The constructor JDialog(MainFrame, String, boolean) is undefined
        
        this.mainFrame = owner;
        
        setSize(new Dimension(300, 100));
 
        initComponents();
        addComponents();
 
        setLocationRelativeTo(owner);
//The method setLocationRelativeTo(Component) in the type Window is not applicable for the arguments (MainFrame)
        setVisible(true);
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    }
  1. Kannst du drin lassen, außer es stört dich oder du benutzt es wirklich nie - dann nimms raus.
  2. Welche Java-version hast du? Das wird wohl kommen, weil deine MainFrame-Klasse nicht richtig erkannt wird (s.o.)
  3. Sehen wir uns nochmal an, wenn du die MainFrame-Klasse ausgetauscht hast. (Am besten mal alles entfernen und dann wieder neu hier rausholen.)
ich hab gesehen das du die JButton usw alles einzeln importierst
warum sollte man das tun?
wird das nicht schon durch das ".*;" getan?

Macht Eclipse so bei STRG+SHIFT+O (Organize Imports)

Java:
this.mainFrame = owner;
wieso wird hier mit this gearbeitet?

In dem Fall unsinnig - Gewohnheit. Es wäre notwendig, wenn der Parameter auch mainFrame heißen würde.

Java:
//Attribut     = Parameter
this.mainFrame = mainFrame;
 

Ariol

Top Contributor
EDIT:
Davon mal abgesehen muss ich dann nochmal einbaun das beim WindowClosing
(aufs X drücken) auch der dialog erscheint.
Vergiss nicht die DefaultCloseOperation rauszunehmen.

bei
Java:
this.mainFrame = owner;
wie genau funktioniert das hier?
(zeiger warn mir schon immer schleierhaft...)
Siehe Vorpost.

this ist eine Refernz auf das eigene Objekt.
Es besteht also kein Unterschied zwischen this.toString() und toString()
AUSSER: Wenn du z.B. einen Listener benutzt hat der auch eine toString-Methode.

Wenn ich dran denk schreib ich Morgen mal was genaueres dazu.

Java:
private QuitDialog  quitDialog;
verstehe hier auch noch net ganz wie das arbeitet
ich sehe das du das weiter unten nutzt für

Java:
            else if (e.getActionCommand().equals(NO_COMMAND))
            {
                quitDialog.dispose();
            }

sry das ich als nachfrage... hab schon 3 bücher gelesen bzw nutze diese auch als nachschlagewerk aber das dipl informatiker chinesich ist teilweise sehr anstregend...

s.o.: Ist sicherer und klarer so.
Das
 

Ariol

Top Contributor
Java:
  public QuitDialog(final MainFrame owner,final String title, boolean modal)
    {
    	super(owner,title,modal);
//hier erbt QuitDialog durch Super. Dadurch hängt das Fenster am Dialog?        
        this.mainFrame = owner;

Nein, dadurch hängt der Dialog am Fenster (Fenster=Owner)
Aber das mit der Vererbung stimmt.
 

d3x84

Mitglied
Nein, dadurch hängt der Dialog am Fenster (Fenster=Owner)
Aber das mit der Vererbung stimmt.

das meinte ich ja ^^
ich sitz hier nur schon seit...
naja sehr lange halt vor dem schirm =)
..EDIT


und frage mich noch immer wie das mit dem WindowClosing so funktioniert
muss ich das jetzt normal über den konstruktor machen?
oder kann ich das auch so umsetzen wie das bei den menüs gemacht ist?
wenn ja wie?
 
Zuletzt bearbeitet:

Ariol

Top Contributor
das meinte ich ja ^^
ich sitz hier nur schon seit...
naja sehr lange halt vor dem schirm =)
..EDIT


und frage mich noch immer wie das mit dem WindowClosing so funktioniert
muss ich das jetzt normal über den konstruktor machen?
oder kann ich das auch so umsetzen wie das bei den menüs gemacht ist?
wenn ja wie?

Java:
package WalletTool;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

public class MainFrame extends JFrame
{
	private static final long	serialVersionUID	= 3595405672999869797L;

	private static final String	CHARACTER_COMMAND	= "CHARACTER";

	private static final String	SAVE_COMMAND		= "SAVE";

	private static final String	RESTORE_COMMAND		= "RESTORE";

	private static final String	QUIT_COMMAND		= "QUIT";

	private static final String	INFO_COMMAND		= "INFO";

	// Menubar Erzeugen
	private final JMenuBar		menubar				= new JMenuBar();

	// Menupunkte Erzeugen
	private final JMenu			fileMenu			= new JMenu("File");
	private final JMenu			helpMenu			= new JMenu("Help");

	// Untermenupunkte File Anlegen
	private final JMenuItem		characterMenuItem	= new JMenuItem("Add Charakter");
	private final JMenuItem		saveMenuItem		= new JMenuItem("Save Settings");
	private final JMenuItem		restoreMenuItem		= new JMenuItem("Restore Settings");
	private final JMenuItem		quitMenuItem		= new JMenuItem("Quit");

	// Untermenupunkte Help Anlegen
	private final JMenuItem		infoMenuItem		= new JMenuItem("Info");

	// Konstruktor MainWindow
	public MainFrame(final String title)
	{
		super(title);
		// Konstante Werte des Gesamten Fensters
		setPreferredSize(new Dimension(800, 600));

		initComponents();
		addComponents();
		pack();
		
		setLocationRelativeTo(null);
		setVisible(true);
		addWindowListener(new MainFrameWindowListener(this));
	}

	private void addComponents()
	{
		// Untermenupunkte von File Aufnehmen
		fileMenu.add(characterMenuItem);
		fileMenu.add(saveMenuItem);
		fileMenu.add(restoreMenuItem);
		fileMenu.addSeparator();
		fileMenu.add(quitMenuItem);

		// Untermenupunkt von Help Aufnehmen
		helpMenu.add(infoMenuItem);

		// Hauptmenupunkte Aufnehmen
		menubar.add(fileMenu);
		menubar.add(helpMenu);

		// Layout
		setLayout(new BorderLayout());
		add(menubar, BorderLayout.NORTH);
	}

	private void initComponents()
	{
		MainFrameActionListener actionListener = new MainFrameActionListener(this);

		characterMenuItem.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_DOWN_MASK));
		characterMenuItem.setActionCommand(CHARACTER_COMMAND);
		characterMenuItem.addActionListener(actionListener);

		saveMenuItem.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK));
		saveMenuItem.setActionCommand(SAVE_COMMAND);
		saveMenuItem.addActionListener(actionListener);

		restoreMenuItem.setAccelerator(KeyStroke.getKeyStroke('R', InputEvent.CTRL_DOWN_MASK));
		restoreMenuItem.setActionCommand(RESTORE_COMMAND);
		restoreMenuItem.addActionListener(actionListener);

		quitMenuItem.setAccelerator(KeyStroke.getKeyStroke('Q', InputEvent.CTRL_DOWN_MASK));
		quitMenuItem.setActionCommand(QUIT_COMMAND);
		quitMenuItem.addActionListener(actionListener);

		infoMenuItem.setAccelerator(KeyStroke.getKeyStroke('I', InputEvent.CTRL_DOWN_MASK));
		infoMenuItem.setActionCommand(INFO_COMMAND);
		infoMenuItem.addActionListener(actionListener);
	}

	private class MainFrameActionListener implements ActionListener
	{		
		private MainFrame	mainFrame;

		public MainFrameActionListener(MainFrame frame)
		{
			this.mainFrame = frame;
		}

		public void actionPerformed(ActionEvent e)
		{
			if (e.getActionCommand().equals(QUIT_COMMAND))
			{
				new QuitDialog(mainFrame,"Do you really want to Quit?",true);
			}
			// TODO - other commands
		}
	}
	
	private class MainFrameWindowListener implements WindowListener
	{
		private MainFrame	mainFrame;
		
		public MainFrameWindowListener(MainFrame frame)
		{
			this.mainFrame = frame;
		}
		
		public void windowActivated(WindowEvent e){}

		public void windowClosed(WindowEvent e){}

		public void windowClosing(WindowEvent e)
		{
			new QuitDialog(mainFrame,"Do you really want to Quit?",true);
		}

		public void windowDeactivated(WindowEvent e){}

		public void windowDeiconified(WindowEvent e){}
		
		public void windowIconified(WindowEvent e){}
		
		public void windowOpened(WindowEvent e){}
	}

}

Du kannst das jetzt natürlich nochmal kapseln - aber das ist bei einem Einzeiler im Konstruktor wenig sinnvoll.
 

d3x84

Mitglied
oh man ... danke ^^ "hand gegen den kopf schlag"
ich probier stundenlang rum und und dachte mir schon das es irgendwie so funktioniert...
aber wirklich hin bekommen hab ichs leider nicht..
naja nu weiss ich bescheit =D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen

Neue Themen


Oben