# Java-Applikation soll sich automatisch der Bildschirmauflösung anpassen



## Lautsprecher (6. Oktober 2005)

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:


```
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


----------



## schnuffie (6. Oktober 2005)

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


```
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.


----------



## Lautsprecher (6. Oktober 2005)

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()


```
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?


----------



## schnuffie (11. Oktober 2005)

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.


----------



## _Truck_ (11. September 2007)

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


----------



## zerix (11. September 2007)

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


----------



## _Truck_ (12. September 2007)

zerix hat gesagt.:


> du berechnest jede Größe und jede Position selbst anhand der Bildschirmauflösun
> 
> zEriX



Wie ist denn die Logik dazu ?

Danke,
Gruß Truck


----------



## MeinerEiner_80 (12. September 2007)

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


----------



## zeja (12. September 2007)

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


----------



## Na_dine (15. September 2007)

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


----------



## zeja (15. September 2007)

Was hast du denn im Moment als Code. Mit deiner Fehlermeldung kann ich nichts anfangen weil es die von der Entwicklungsumgebung ist und diese sich doch sehr unterscheiden.


----------



## Na_dine (15. September 2007)

Hallo, meine entwicklungsumgebung ist eclipse.
ich hab nen ganz normales jframe mit awt inhalten, buttons etc. im Gridlayout. hat alles funktioniert, nur die fenstergröße ist problematisch:

JFrame f = new JFrame("Start"); 
f.setIconImage(...);
Container cp = f.getContentPane();
cp.add(GridBody());

Dimension  screen = Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(screen);
f.pack(); //würd ich gerne benutzen funktioniert aber nicht - wieso auch immer

f.setVisible(true);


so das wars auch schon an wichtigem gluab ich. der quellcode steht bei mir in der mainmethode. Gruß, na dine


----------



## zeja (16. September 2007)

pack passt die Größe des Frames auf eine Größe an welche die Komponenten benötigen. Das setSize zuvor hat dann keine Wirkung mehr. Lass also das pack weg und es wird funktionieren.


----------



## Na_dine (18. September 2007)

Dankeschön,
habe pack() ausgeschaltet und nun passt sich das JFrame dennoch nicht an die Bildschirmauflösung an!

Hier mal mein Quellcode:
JFrame f  = new JFrame("Esköllator");
		f.setIconImage(new ImageIcon("aufzugfahrt1.jpg").getImage() );

		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();	
		f.setSize(screen);

		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.add(start());
		f.setVisible(true);

also getDefaultToolkit() wird mir als Fehler angezeigt... und hhabe leider absolut keine Ahnung wie ich ihn lösen kann ...

Vielen Dank schon mal für jede Hilfe


----------



## zeja (18. September 2007)

Versuch mal direkt:
Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 

Das muss gehen.


----------



## Na_dine (20. September 2007)

Hey super,
vielen lieben Dank, ist die rettung zumindest einer meiner probleme


----------

