Eclipse Java Eclipse Windowbuilder - interaktive Diaglog-GUI

Morinho

Aktives Mitglied
Hallo zusammen,

ich muss ein Tool schreiben das sehr viele Fenster besitzt und benutze daher den WindowBuilder mit Absolut Layout.

Das Tool soll auf Geräten laufen mit einer Bildschrimgröße von 1024x768.

Es tut mir im Voraus leid wenn ich etwas nicht gleich verstehe oder weiter hinterfragen muss, denn ich bin gerade dabei in das Programmieren von GUI´s einzusteigen.

Ich habe folgende Schwierigkeiten:
1. Wie kann ich mein Fenster dazu "zwingen" sich an die Bildschirmgröße anzupassen?
Habe bis jetzt nur diesen Code gefunden, der funktioniert aber nicht:
Code:
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
startFrame.setSize(screen);

2. Ich habe wie schon gesagt mehrere verschieden ausehenende Fenster und für jedes Fenster eine Klasse und bei bestimmten Button sollen bestimmte Fenster aufgehen, doch gleichzeitig soll sich das andere wieder schließen. Sodass nur immer ein Fenster offen ist.

Meine Frage: Wie kann ich das deligieren?

3. Manche Button bei manchen Fenstern sollen sich grün einfärben wenn man sie anklick und wieder die normale Buttonfarbe bekommen wenn sie nochmals angeklickt werden, das ganze soll im Hintergrund mit grün = true und normale Buttonfarbe = false ablaufen.

Meine Frage: Funktioniert das mit einem actionPerformed und einer if-Bedingung?



Ich bedanke mich im Voraus für alle Antworten und entschuldige mich für meinen unfangreichen Schwierigkeiten.

Wenn der Code von mir benötigt wird gebt bescheid.
 
Zum Vollbild: setDecorated(false) must du noch aufrufen. Lass dir mal ausgeben, was getScreenSize zurückgibt.
Geht nicht ist keine Fehlerbeschreibung. Was genau passiert stattdessen?
Zum Delegieren: Guck dir mal Events an.
Zum Grünwerden: Was du suchst ist ein sog. ToggleButton.
 
Hallo Morinho,

zu deiner 1. Frage:
Wenn du das Fenster maximieren willst benutze diesen Code:
Code:
startFrame.setExtendedState(6);

zu deiner 2. Frage:
in der actionPerformed Methode wenn der Button gedrückt wurde:
frame1.setVisible(false);
frame2.setVisible(true);

zu deiner 3. Frage:
Ja ich glaube das dürft genau so funktionieren 🙂
 
Diablous ich bedanke mich rießig für den Code der hat mein Problem gelöst das mein Fenster sich an die Bildschirmgröße anpasst *-*!

Das Problem mit den mehreren Fenstern habe ich in den Grief bekommen mit:

Code:
startFrame.dispose();

ok ich habe mehrere Varianten ausprobiert aber irgendwie kann er das gespeicherte also das wenn es mal auf grün gesetzt wurde nicht behalten wenn ich das fenster wieder schließe in dem der Button ist.

Code:
public void mouseClicked(MouseEvent arg0) {
				btnNewButton.setBackground(SystemColor.GREEN);
			}

So sieht der Code ungefähr aus zu dem Button der bei mouseClick Grün wird doch bei einem erneuten wieder normal aber ich weis nicht wie ich das machen soll ein erneuter mouseClick funktioniert nicht.
 
Es löst evtl. das Problem, ist aber extrem schlechter Programmierstil. Man nutzt entweder:

Java:
startFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);

Oder mit statischem Import:

Java:
import static javax.swing.JFrame.MAXIMIZED_BOTH;

startFrame.setExtendedState(MAXIMIZED_BOTH);
 
Zuletzt bearbeitet:
Um die Farbe zu bekommen musst du den folgenden Code irgendwo ganz am Anfang des Programms verwenden und in einer globalen Variable speichern:
Code:
Color ursprünglicheFarbe;
ursprünglicheFarbe = btnNewButton.getBackground();
Wobei ursprünglicheFarbe schon die globale Variable ist.
 
Zuletzt bearbeitet:
Habe deine Idee angenommen und an mehreren Stellen ausprobiert und es ist so ein super Tipp doch jetzt bleibt der Button so oft wie man auch klick immer in der Anfangsfarbe.
 
Wenn dies das Standardverhalten von deinem ToggleButton sein soll, kannst du auch den UIManager verwenden:

Java:
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JToggleButton;
import javax.swing.UIManager;

public class Swing {
	public static void main(String[] args) {
		// Vor dem Start der Applikation setzen:
		UIManager.put("ToggleButton.select", Color.GREEN);
		UIManager.put("ToggleButton.background", Color.RED);

		new Swing();
	}

	public Swing() {
		JFrame frame = new JFrame();
		frame.getContentPane().add(new JToggleButton("test"));
		frame.pack();
		frame.setVisible(true);
	}
}
 
Probier mal folgenden Code aus:
Code:
public void mouseClicked(MouseEvent arg0) {
 		if (btnNewButton.getBackground().equals(ursprünglicheFarbe)) {
 		    btnNewButton.setBackground(SystemColor.GREEN);
 		}
 		else {
 			btnNewButton.setBackground(ursprünglicheFarbe);
 		}
	}
 
Habe noch ein weiteres Anliegen:

Wenn mein Button grün ist und der Benutzer Fertig drückt wird der Text von dem Button in der anderen Maske gespeichert. Nun möchte ich das der Button schon grün ist wenn der Benutzer nochmals auf die Auswahl drückt den der Button ist ja schon ausgewählt.

Leider funktioniert mein Code dazu nicht ganz bitte um Tipps.

Code:
erprobungsButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				startFrame.dispose();
				Erprobung window = new Erprobung();
				if (textFeldErprobung.getText() != null){
					window.accButton.setBackground(SystemColor.GREEN);
				}
				window.erprobungsFrame.setVisible(true);
			}
		});
 
Zuletzt bearbeitet:
Wenn textFeldErprobung ein instanziiertes TextFeld ist, wird getText() nie null zurückliefern. Probier stattdessen mal
Code:
if (!textFeldErprobung.getText().equals("")){
aber ich weiß nicht ob das der Fehler war.
 
Zuletzt bearbeitet:
Ich habe es jetzt so hinbekommen:

Code:
if (textFeldErprobung.getText().isEmpty()){
					window.accButton.setBackground(window.ursprünglicheFarbe);
				}else{
					window.accButton.setBackground(SystemColor.GREEN);
				}

Hat jemand noch einen Tipp wie ich das gleiche mit dem Text übernehmen auf Startmaske machen könnte nur mit mehreren Checkboxen anstatt Button?
 
Zuletzt bearbeitet:

Zurück
Oben