2017-06-23 2 views
1

Ich versuche, ein Mini-Spiel mit Java Swing zu erstellen und ich kann keine Lösung für ein Problem finden, die mit dem gleichen Code die App auf verschiedenen PCs unterschiedlich anzeigt. Es zeigt auf 1366x768 Auflösung Bildschirm wie es sollte, erstreckt sich aber auf Full-HD-Bildschirmen. Ich habe versucht, die Auflösung auf den hochauflösenden Bildschirmen zu ändern, habe versucht, die Symbole/Schriftgrößen zu ändern, aber ohne Erfolg. im Hinzufügen von 2 Screenshots, 1 mit wie es aussehen soll und die andere auf High-Res-Bildschirm. Beachten Sie, dass aus irgendeinem Grund, zusätzlich zu der Karte zu erweitern, der High-Screen die Symbolleiste oben auf der Karte auch vergrößert.Swing-Komponenten zeigt auf verschiedenen Stücken unterschiedlich an

, wie es aussieht annehmen, wie: how it suppose to look like

, wie es auf hochauflösenden Bildschirmen aussieht: how it looks on high res screens

Antwort

1

Ich vermute, dass Ihre Kacheln eine GridLayout in BorderLayout.CENTER, das Standardlayout und den Speicherort für eine JFrame besetzen. Ändern Sie die Größe dieses Elements example, um den Effekt mit Kacheln mit einer festen Größe zu sehen (siehe Abbildung unten). Dies kann beispielsweise passieren, wenn Sie setExtendedState() bis MAXIMIZED_BOTH haben. Sie könnten setResizable(false) auf dem umschließenden JFrame versuchen, die Trennung auszuschließen.

Ich habe keine Ahnung, wie man das Fenster von Anfang an in die richtige Form bringen kann.

Wenn Sie pack() die JFrame umschließt, es „Ursachen dieser Window die bevorzugte Größe und Layouts seiner Subkomponenten passen bemessen werden.“ Das example zitiert erhält seine ursprüngliche Größe von SIZE der Symbole, die die Kacheln umfassen, aber Sie können getPreferredSize() außer Kraft setzen, um ein anderes Ergebnis anzugeben.

Vorher:

image not stretched

Nach:

image stretched

1

diese Probleme Sie das Verhältnis von Breite zu Höhe für den Bildschirm finden müssen zu lösen. Die Bilder können dann entsprechend skaliert werden.

Wenn Sie möchten, dass die Bilder immer quadratisch sind, dann sollten Sie herausfinden, ob die verfügbare Breite oder Höhe am kleinsten ist, und sie dann skalieren.

Was Sie gerade tun, ist den ganzen Bildschirm zu nehmen und ihn zu dehnen, statt ihn zu nehmen und alles darin zu integrieren. Auch die Bildgrößen sollten angepasst werden, wenn die verfügbare Bildschirmgröße größer/kleiner ist.

+0

Ich glaube zu verstehen, was Sie meinen. Wenn ich den Rahmen veränderlich und das Fenster minimiere, kann ich es in die richtige Form bringen, aber ich habe keine Ahnung, wie man das Fenster von Anfang an in die richtige Form bringen kann. Die Art und Weise, wie ich den Code schreibe, habe ich nicht die Möglichkeit, jedes Mal, wenn ich eine Karte ändere, das Paket neu zu packen. –

Verwandte Themen