Anwendung im Vollbild zentrieren

Vivyel

Mitglied
Hallo zusammen,

ich würde gerne wissen wie ich meine GUI im Vollbildmodus(nicht im fenster) zentrieren kann. Weder Youtube, google, noch dieses Forum enthielten eine Lösung.

Zusätzliche infos:
Ich verwende ein JFrame mit dem layout absolute im windowbuilder. Im Fenster hab ich die Andwendung schön mittig positionieren können, aber im Vollbildmodus befindet sie sich immer im linken oberen Bildschirmrand.

Ich weis leider nicht wie ich sie zentrieren kann, bitte helft mir.

Liebe Grüße

Vivyel
 

VfL_Freak

Top Contributor
Moin,

verstehe offen gestanden Deine Frage nicht !

"Vollbildmodus" bedeutet doch, dass das Anwendung über den gesamten Bildschirm geht ....
Was sollte denn da noch zentriert werden ?

Poste ggf. mal entsprechende Bildschirmfotos zu Verdeutlichung, was Du genau meinst !

Gruß Klaus
 

RalleYTN

Bekanntes Mitglied
Allgemeine Formel zum zentrieren von Inhalt INNERHALB einer Anwendung:

Java:
int x = (int)((frame.getWidth() - content.getWidth()) * 0.5F);
int y = (int)((frame.getHeight() - content.getHeight()) * 0.5F);

Und ein kleiner Tipp: Hau den Windowbuilder in die Tonne und schreib den Code selber, da hast du mehr Freiheiten und dazu gibt es viele viele YouTube Tutorials(auch auf Deutsch).
 

Schmetterhand

Aktives Mitglied
Bei mir funktioniert das Zentrieren des Fensters es mit Swing ungefähr so (unabhängig vom Vollbild):

Java:
  private static Point gibMonitormitte(final Dimension fenstergröße)
  {
  Dimension monitor = Toolkit.getDefaultToolkit().getScreenSize();

  int eckx = ( monitor.width  - fenstergröße.width  ) / 2;
  int ecky = ( monitor.height - fenstergröße.height ) / 2;
  Point ecke = new Point( eckx, ecky );

  return ecke;
  }
 

RalleYTN

Bekanntes Mitglied
Bei mir funktioniert das Zentrieren des Fensters es mit Swing ungefähr so (unabhängig vom Vollbild):

Java:
  private static Point gibMonitormitte(final Dimension fenstergröße)
  {
  Dimension monitor = Toolkit.getDefaultToolkit().getScreenSize();

  int eckx = ( monitor.width  - fenstergröße.width  ) / 2;
  int ecky = ( monitor.height - fenstergröße.height ) / 2;
  Point ecke = new Point( eckx, ecky );

  return ecke;
  }
für ein JFrame ist es aber immer noch am einfachsten die Methode setLocationRelativTo(Component) aufzurufen. man gebe als Parameter "null" und das Fenster ist mittig. Durch nur eine Zeile Code.
 

Vivyel

Mitglied
@RalleYTN, ich habe deine Formel in meine public class kopiert, jedoch funktionieren die getter nicht bei mir. ich habe anschließden das frame durch ein JFrame ersetzt und das content zu ContentPane geändert, was leider auch nicht funktioniert hat. Oder mach ich was falsch in der variablen deklaration?
ich benutze den builder nur um mir die oberfläche zu designen, als auch für das automatiche erstellen von event handlern, in die ich meine methoden selbst schreibe. mir persönlich ist es auch schon mit xaml viel leichter gefallen, erst die oberfläche optisch zu gestalten und dann die logik mit c# dahinter zu schreiben.(mir persönlich fällt java schwerer als c#u.a. auch wegen der syntax )

@Schmetterhand, ich habe deine klasse 1:1 in meinen code übernommen, das toolkit importiert, jedoch wird die anwenung im maximierten fenster wieder nicht zentriert.

Darstellung des Problems:
im bild minifenster ist die anwendung schön mittig. aber sobald ich das fenster maximiere (sie png maximiert) wird die anwenung ins linke obere eck des bildschirms geschoben, anstatt mittig zu bleiben.

Was ist meine Anwendung?
meine anwendung generiert eine random additionsaufgabe die der anwender lösen soll. man kann die tastatur verwenden oder auf die buttons klicken. wenn die aufgabe richtig gelöst wurde generiert er automatisch die nächste.

vielen dank für eure antworten
 

Anhänge

  • minifenster.png
    minifenster.png
    200,5 KB · Aufrufe: 58
  • maximiert.png
    maximiert.png
    57,8 KB · Aufrufe: 47

RalleYTN

Bekanntes Mitglied
@RalleYTN, ich habe deine Formel in meine public class kopiert, jedoch funktionieren die getter nicht bei mir. ich habe anschließden das frame durch ein JFrame ersetzt und das content zu ContentPane geändert, was leider auch nicht funktioniert hat. Oder mach ich was falsch in der variablen deklaration?
Ich habe eine bessere Lösung gefunden. .......hast ja schließlich auch mal Bilder gezeigt.
1. Packe alle deine Komponenten abgesehen von den Containern in einen neuen Container.
2. Mache noch einen Container und setze das Layout auf BorderLayout mit
Java:
container2.setLayout(new BorderLayout());
3. Adde den Container mit den Komponenten in den Container mit den BorderLayout und setze ihn in die zentrale Position des BorderLayouts mit
Java:
container2.add(container1, BorderLayout.CENTER);
4. setze den Container mit dem BorderLayout als ContentPane für deine JFrame
5. PROBLEM GELÖST!
 

Schmetterhand

Aktives Mitglied
@Vivyel
Ich dachte, du meinst ein Fenster, welches zentriert werden soll! (Du hast immer von einer "Anwendung, die zentriert werden soll" gesprochen) Nun ist es aber nur eine Panele, die in einem Fenster zentriert werden soll.
Die Lösung von RallyeYTN ist zwar gut, aber wenn du Netbeans als graphischen GUI-Designer benutzt, geht das alles noch per Klicki-Klicki.
 

Vivyel

Mitglied
@RalleYTN vielen dank für diese Lösung. Leider hänge ich gerade bei 4. ich weiß nicht was ich im code verändern muss damit container2 als contentpane für mein jframe verwendet wird.

ich hab deine schritte in einer testklasse ausgeführt und dort folgende hierarchie (siehe bild) und code (siehe code)
das contentpane hat das layout absolut, container1 ebenfalls und container2 hab ich wie du gesagt hast auf borderlayout gestellt.

tut mir leid, ich stell mich echt blöd an:(
eigentlich müsste ich sowas beherrschen, leider verstand ich nie was in unseren java gui vorlesungen.(der prof konnte überhaupt nix verständlich erklären). Jetzt versuch ich mir alles in den Ferien selbst bei zu bringen, um meinen kommilitonen nächstes semester im softwareprojekt eine Hilfe zu sein.
 

Anhänge

  • code.png
    code.png
    162,2 KB · Aufrufe: 37
  • hierarchie.png
    hierarchie.png
    190,2 KB · Aufrufe: 38
Zuletzt bearbeitet:

RalleYTN

Bekanntes Mitglied
Hier ist mal ein Beispiel Code:
Java:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class AnwendungImVollbildmodusZentrieren {

   public static void main(String[] args) {
     
     // erstellt ContentPane
     Container contentPane = new Container();
     contentPane.setLayout(new BorderLayout());
     
     // erstellt Container
     Container components = new Container();
     components.setLayout(new FlowLayout());
     
     // erstellt Buton
     JButton button = new JButton("Ich bin ein Button!");
     
     // erstellt Textfeld
     JTextField textField = new JTextField("Hier steht Text");
     
     // Fügt Komponenten in Container ein
     components.add(button);
     components.add(textField);
     
     // Fügt Container in ContentPane ein
     contentPane.add(components, BorderLayout.CENTER);
     
     //erstellt JFrame
     JFrame frame = new JFrame("Anwendung im Vollbildmodus zentrieren");
     frame.setSize(640, 480);
     frame.setLocationRelativeTo(null);
     frame.setResizable(true);
     frame.setMinimumSize(new Dimension(640, 480));
     frame.setContentPane(contentPane); // setzt ContentPane
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setVisible(true);
   }
}
Und wenn du mit Java nicht so gut klarkommst dann empfehle ich diese Playlist:

 

Vivyel

Mitglied
ich hab deine klasse mal getestet, dabei ist mir aufgefallen, dass du als content pane genau wie ich das absolute layout verwendest. jedoch im nächsten container hast du das layout auf flow verändert, womit der inhalt des panels oben mittig des bildschirms und positioniert wird.

ich habe das flowlayout testweise über meinen container gelegt. der inhalt wird zwar mittig, dafür kann ich nicht mehr die position der elemente bestimmen und alles wird waagerecht an den oberen bildschirmrand geklebt, mein komplettes design ist damit zerstört.
es muss noch eine andere möglichkeit geben dies mit einem absoluten layout um zu setzen.
kann man das standard content pane im windows build editor i-wie manipulieren, damit es den maximierten zustand anzeigt?




Anmerkung:
an unserer fh hat unser prof das jframe immer über (public class nameklasse extends JFrame) implementiert. deine methode hat er in der form nie angewandt. wir haben in der main nur das set visible für public class gesetzt damit die elemente beim abspielen auch angezeigt werden.
ich hab mir vorhin unseren workspace angeschaut und keine "methode" gefunden die den inhalt mittig setzt.

meine größten probleme liegen eigentlich mehr in der syntax. (das liegt vermutlich auch daran, dass ich das letzte semester fast täglich an meiner windows app mit xaml und c# gearbeitet habe - dafür gabs dann auch eine 1. und java ziemlich vernachlässigt hab)
 
Zuletzt bearbeitet:

RalleYTN

Bekanntes Mitglied
Du kannst die Position sehr wohl bestimmen, allerdings musst du ein paar mehr Layouts und Container verwenden und das ganze verschachteln...... oder du schreibst deinen eigenen LayoutManager. das erste erfordert Grundlegende Kenntnisse zu AWT und Swing und das zweite fortgeschrittene. Ich habe einfach ein neues JFrame Objekt erzeugt während du ein eigenes definierst. Das ist dann wieder Grundwissen zur Objektorientierung in Java. Ih empfehle dir wirklich alle Videos der Playlist einmal anzusehen. ;)
 

YesTerDay2810

Neues Mitglied
Ich habe mal ein bisschen recherchiert. Das ist eigentlich ganz einfach :D

Java:
public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ProjectManagerWindowLogin frame = new ProjectManagerWindowLogin();
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

Das wichtige ist die Code Zeile: frame.setLocationRelativeTo(null); Diese sollte deinen Frame mittig auf dem Bildschirm platzieren. Bei mir hat dies zumindest funktioniert!

Gruß
Yester
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
P Swing Anwendung von LayeredPanel AWT, Swing, JavaFX & SWT 6
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
N JavaFX Vor beenden der Anwendung durch klicken von X Dialog zeigen AWT, Swing, JavaFX & SWT 1
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
B JavaFX Wie A4-Seite in meiner Anwendung repräsentieren AWT, Swing, JavaFX & SWT 6
B JavaFX JavaFX Anwendung deployen (entw als runnableJAR oder exe-Datei) AWT, Swing, JavaFX & SWT 15
OSchriever Anwendung aus SystemTray öffnen AWT, Swing, JavaFX & SWT 29
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
T Anwendung mit X schliessen AWT, Swing, JavaFX & SWT 1
L JavaFX OpenJFX13 Anwendung exportieren AWT, Swing, JavaFX & SWT 7
D PDF Viewer in SWT-Anwendung AWT, Swing, JavaFX & SWT 8
O Basics - Anwendung erstellen mit mehreren Szenen AWT, Swing, JavaFX & SWT 1
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
A JavaFX Anwendung in Jar Datei AWT, Swing, JavaFX & SWT 8
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
J Splashscreen Start Anwendung AWT, Swing, JavaFX & SWT 14
MiMa Programmeinstellungen für Anwendung?? AWT, Swing, JavaFX & SWT 54
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
I JFileChooser mit System L&F bei anderem L&F der eigtl. Anwendung AWT, Swing, JavaFX & SWT 0
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
L JavaFX PdfViewer für JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
D JafaFX Anwendung beenden AWT, Swing, JavaFX & SWT 11
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
X Anwendung skalierbar AWT, Swing, JavaFX & SWT 3
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
D JavaFX Anwendung hängt sich permanent auf AWT, Swing, JavaFX & SWT 6
L JavaFX Java FX Anwendung nach MVC mit Observer Pattern AWT, Swing, JavaFX & SWT 15
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
I Variabeln speichern in Desktop Anwendung AWT, Swing, JavaFX & SWT 2
A Swing Textübergabe innerhalb der Anwendung in unterschiedlichen Fenster AWT, Swing, JavaFX & SWT 8
GreyFox JLabel in laufender Anwendung erzeugen AWT, Swing, JavaFX & SWT 6
J JavaFX Anwendung läuft in eclipse, nicht aber exportiert AWT, Swing, JavaFX & SWT 2
P Anwendung kommt nach minimieren nicht mehr in den Vordergrund AWT, Swing, JavaFX & SWT 5
K 3D-Grafik Anwendung von Java in Gnuplot AWT, Swing, JavaFX & SWT 3
M SWT Anwendung in der Symbolleiste verstecken AWT, Swing, JavaFX & SWT 5
B SWT Redesign SWT Anwendung AWT, Swing, JavaFX & SWT 7
M Java anwendung VOR vollbildspielen (schon wieder...) AWT, Swing, JavaFX & SWT 5
S Swing Lauftext Performance Probleme, in größerer Anwendung AWT, Swing, JavaFX & SWT 6
VfL_Freak Swing Zweiter Monitor von Java-Anwendung ansprechbar ?? AWT, Swing, JavaFX & SWT 2
S Swing Ist meine gute Java Anwendung vorgängig? AWT, Swing, JavaFX & SWT 20
P Klassenaufbau bei komplexerer GUI Anwendung AWT, Swing, JavaFX & SWT 14
S Java GUI Anwendung ohne Konsole starten AWT, Swing, JavaFX & SWT 6
qwerqer Swing Anwendung soll blinken (Taskleiste) AWT, Swing, JavaFX & SWT 3
R Java Desktop Anwendung erstellen. Womit? AWT, Swing, JavaFX & SWT 3
eLogic Fullscreen anwendung aus der man nicht rauskommt AWT, Swing, JavaFX & SWT 37
T Java-Anwendung arbeitet Programm in seltsamer Reihenfolge ab AWT, Swing, JavaFX & SWT 3
H Anwendung schließen ohne System.exit AWT, Swing, JavaFX & SWT 5
R Anwendung ohne Symbol in der Taskleiste AWT, Swing, JavaFX & SWT 3
H SWT RAP Anwendung - Tabelle - Theming AWT, Swing, JavaFX & SWT 3
alderwaran Swing XML editor plugin für eigene anwendung AWT, Swing, JavaFX & SWT 2
G Swing Update-Funktion für Swing-Anwendung AWT, Swing, JavaFX & SWT 5
C Swing Eine SWING-Anwendung mittels MVC AWT, Swing, JavaFX & SWT 4
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
B SWT Hello World-Anwendung mit GUI in Eclipse -Problem mit Import von SWT AWT, Swing, JavaFX & SWT 9
G Applet und Swing Anwendung AWT, Swing, JavaFX & SWT 2
J Client Server Anwendung - Mehrere Clients in einer Server GUI AWT, Swing, JavaFX & SWT 11
F Anwendung auf Teskleiste legen AWT, Swing, JavaFX & SWT 3
B MDI Anwendung alle maximierten InternalFrames in Tabs AWT, Swing, JavaFX & SWT 3
T Anwendung starten AWT, Swing, JavaFX & SWT 5
J Anwendung von Swing nach SWT bzw. Eclipse portieren AWT, Swing, JavaFX & SWT 3
2 Tablet-PC Java-Anwendung -> Tablet-Pen Problem !! AWT, Swing, JavaFX & SWT 3
J Swing Anwendung schließen im Listener AWT, Swing, JavaFX & SWT 3
isowiz Vorteil einer RCP Anwendung gegenüber Swing AWT, Swing, JavaFX & SWT 3
? Java-SWT-Anwendung in der Taskleiste nicht sichtbar AWT, Swing, JavaFX & SWT 6
H Netbeans-Anwendung schliessen AWT, Swing, JavaFX & SWT 8
M "Billig Excel" Anwendung mit Swing - Aufwand ? AWT, Swing, JavaFX & SWT 4
G "Views-Abwechseln-Pro " in RCP-Anwendung AWT, Swing, JavaFX & SWT 2
H PopUp-Fenster in einer Java Server Faces Anwendung AWT, Swing, JavaFX & SWT 4
T Auf Fenster innerhalb der Anwendung zugreifen-auch elegant? AWT, Swing, JavaFX & SWT 2
G Organisation Anwendung mit mehreren Eingabedialogen AWT, Swing, JavaFX & SWT 3
H JWindow schließen bei einem Klick außerhalb der Anwendung? AWT, Swing, JavaFX & SWT 19
G SWT DatePicker funzt nicht in eigener Anwendung AWT, Swing, JavaFX & SWT 5
E Bestehende Anwendung erweitern ->JFrame in JPanel verpack AWT, Swing, JavaFX & SWT 4
U Anwendung nicht beenden beim form schliessen? AWT, Swing, JavaFX & SWT 6
T "Echte" MDI Anwendung AWT, Swing, JavaFX & SWT 4
G Auf markierten Text einer anderen Anwendung zugreifen. AWT, Swing, JavaFX & SWT 8
G Relativer Pfad in Rich Client Anwendung AWT, Swing, JavaFX & SWT 4
N Keyboard-Shortcut, der in der ganzen Anwendung funktioniert AWT, Swing, JavaFX & SWT 2
D JDIC Browser in SWT/JFace Anwendung nutzen AWT, Swing, JavaFX & SWT 2
J Swing-Anwendung mit ActionListener AWT, Swing, JavaFX & SWT 7
S Anwendung über Button beenden? AWT, Swing, JavaFX & SWT 4
O Anwendung aus dem Programm heraus neu starten AWT, Swing, JavaFX & SWT 2
U Anwendung mit mehreren "Fenstern" AWT, Swing, JavaFX & SWT 4
R Screenshot von fremder Anwendung AWT, Swing, JavaFX & SWT 4
Hotkey Freie Icons für Anwendung mit Java Look&Feel AWT, Swing, JavaFX & SWT 4
S SWT-Anwendung als startfähiges Jar unter Linux AWT, Swing, JavaFX & SWT 4
P GUI geschickt von dem Rest der Anwendung trennen AWT, Swing, JavaFX & SWT 6
S HTML-Datei in Anwendung (JEditorPane) AWT, Swing, JavaFX & SWT 5
A Screenshot einer Anwendung erstellen AWT, Swing, JavaFX & SWT 14
A MVC-Pattern - Kreuzweise Anwendung? AWT, Swing, JavaFX & SWT 4
M Komponenten einer Anwendung in JTree strukturiert auflisten? AWT, Swing, JavaFX & SWT 4
G Anwendung um Scrollpane erweitern AWT, Swing, JavaFX & SWT 2
A Look and Feel einer Anwendung verändern AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben