Java-Applikation soll sich automatisch der Bildschirmauflösung anpassen

Lautsprecher

Erfahrenes Mitglied
Hi,
ich habe mit dem Visual Editor unter Eclipse eine Appli. erstellt. Momentan verwende ich eine Bildschirmauflösung von 1024 x 768 Pixel.
Mit dem Befehl:

Code:
this.setExtendedState(JFrame.MAXIMIZED_BOTH);

paßt dann auch alles schön auf dem Bildschirm.
Jedoch gibt es Probleme wenn ich die Auflösung z. B. auf 800 x 600 Pixel stelle. Meine Anwendung ist dann logischer Weise nur noch zur Hälfte zu sehen.
Kann man der Anwendung irgendwie beibringen, dass sie sich automatisch der Bildschirmauflösung anpaßt?

PS: Einfach händisch die Einstellung vom Bildschirm zu ändern funktioniert nicht.
Die Möglichkeit ist für den Endbenutzer gesperrt!

Grüße
 
Du könntest Deinem Fenster beibringen, wie groß Dein Bildschirm ist:

Code:
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

Diese Größe weist Du den Fenster zu und verwendest für Deine Elemente Standard-Layout-Manager (z.B. BorderLayout), diese passen die Ausrichtung automatisch der Fenstergröße an.
 
Hi Schnuffie,
3 Fragen hätte ich noch:

1. Bei Dimension und Toolkit bekomme ich eine Fehlermeldung (cannot be resolved)
Fehlt mir noch eine wichtige Import-Anweisung?
Der Vorgang steht bei mir in der Initialize()

Code:
private void initialize() 
{
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setContentPane(getJContentPane());
    jBKO.setEnabled(false);
    jBGE.setEnabled(false);
    jTMitarbeitername.enable(false);
    jTPersonalnr.enable(false);
    jTKODatum.enable(false);
    jTKOZeit.enable(false);
    jTGEDatum.enable(false);
    jTGEZeit.enable(false);
    jTScanner.setFocusable(true);
    jTScanner.setVisible(false);
    clock();
   Dimension  screen = Toolkit.getDefaultToolkit().getScreenSize();
   setSize(screen);
   this.setTitle("Unternehmen AG");
   this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}


2. Die Größe den Fenster zuweisen: Funktioniert das in dem ich einfach setSize(screen)
setze oder wie meinst Du das?

3. Mein Border-Layout ist null! Passen sich die Komponenten
dann dennoch dem Fenster an oder muss man dann wieder etwas extra
berücksichtigen?
 
1. Mit "import java.awt.*" mußte alles drin sein.

2. this.setSize(screen); this.pack(); this.setVisible(true);

3. Ohne Layoutmanager hast Du das Problem, den Komponenten einen festen Standort und eine feste Größe zuzuweisen, d.h. bei Screenänderungen muß Du tätig werden.
Je nach Aussehen Deiner GUI eignen sich bestimmte Layoutmanager besser oder schlechter. Schau mal in die API, dort sind auch Beispiele.
 
Morgen,

ich habe meine GUI (Swing) mit keinem LayoutManager gestaltet, sondern mit setBounds(int,int,int,int).
Gibt es dennoch eine Möglichkeit sie an die Auflösung anzupassen ?

Gruß Truck
 
Hallo,

es gibt zwei Möglichkeiten. Entweder du berechnest jede Größe und jede Position selbst anhand der Bildschirmauflösung oder du benutzt einen LayoutManager.

Wenn du einen Rat von mir möchtest, dann sag ich: Nimm einen LayoutManager!

MFG

zEriX
 
Diese Logik wirdst du die selbst erarbeiten müssen. Wie sich die Komponenten vergrössern und verschieben bei einer Änderung der Bildschimrauflösung kannst nur du entscheiden. Schließlich kennt hier niemand deine GUI...
Ist auf jeden Falls ein bisschen Arbeit..
Daher date ich dir auch.. nimm einen LayoutManager..

*grüssle*
MeinerEiner
 
Sagen wir an die zur Verfügung stehende Größe anpassen und nicht an die Auflösung.

Du holst dir dazu wie oben gezeigt die zur Verfügung stehende Größe und überlegst dir anhand dessen wo die Komponenten Platziert werden sollen. Da du damit nur genau das machst was ein LayoutManager auch tut, solltest du aber wirklich einen solchen benutzen.

LayoutManager

GridBagLayout
 
Hallo,
habe das selbe Problem mit dem JFrame --> anpassung an aktuelle bildschirmausflösung.
habe mal deinen vorschlag ausprobiert, als fehler wird mir nur .getDefaultToolkit() angezeigt.
Fehlermeldung heißt Rename in File., was soll das denn bedeuten? wie kann ich den Fehler beheben?
vielen Dank schon mal für die Hilfe,
gruß,
Dine
 
Zurück