Laptop skalierung mit 125%

dalco

Aktives Mitglied
hallo,
ich möchte gerne mein Java Programm auf einem neuen Laptop laufen lassen mit FullHD, deswegen skaliere ich mit 125% sonst sieht ja keiner was.
Wie kann ich es auf einfachstem Wege machen, dass es genauso aussieht wie am Desktop PC, also nicht rechts ca. 5cm fehlen.

Am alten Laptop hatte ich nie das Problem, denn der lief nur mit 1320x irgendwas und mit echter 100% skalierung, deswegen ist es mir nie aufgefallen.
Muss ich jetzt alle Dateien mit Ansichten wie Buttons Tabellen, etc...umprogrammieren um tynamisch darauf zu reagieren oder gäbe es auch im eclipse sowas wie eine Grundeinstellung dafür?
Vorallem, die .jpg Grafiken sehen halt stark pixeliger aus, mit den Texten könnte man ja noch leben.

Vielen Dank für eure Ideen
Mfg Tino
 

Neumi5694

Top Contributor
Wenn du eh schon einen Layoutmanager verwendest, kannst du vor dem Erstellen deiner Fenster noch die Schriftarten vergrößern, Buttons usw. passen sich dann automatisch an.

Wichtig: Wenn du beim Erstellen deiner Fenster und Elemente die Schriftarten händisch geändert hast, ändert das gar nichts. Was funktioniert, ist, wenn Schriftarten abgeleitet werden mit deriveFont.



Eine Alternative wäre, über das Betriebssystem die Option für hochauflösende Bildschirme zu wählen. Neuere Java-Versionen vergrößern dann automatisch die Schriftart.
 

dalco

Aktives Mitglied
danke, ja viel ist mit null-layout und ich gebe die größe eines zb. icon jpgs explizit an mit zb. 100,50......
was meinst du mit passender auflösung, das jpg ist doch genau 100x50 px groß, aber bei einer skalierung von 125% wirds dann am rand pixelig.
Tino
 

Neumi5694

Top Contributor
Du kannst jpgs für die Anzeige skalieren.

Aber ja, wenn man so knapp skaliert, dann gibt's Rundungsfehler, damit muss man leben.
Besser: Wenn man Bilder skalieren will, am Besten das Original deutlich größer oder auch deutlich kleiner als die Zielgröße wählen.
Icons am besten gar nicht skalieren, sondern in verschiedenen Versionen vorrätig haben (z.B. 16x16 und 24x24).
Ich hab bisher Icons immer unverändert gelassen und nur die Schriftarten geändert.


NullLayout und AbsoluteLayout sind genau dafür gemacht, dass sich nichts verändert, davon musst du weg. Da kannst du ja nicht mal verschieden lange Texte für die mehrsprachigen Labels ordentlich darstellen.

Ich arbeite in fast allen Fällen mit GridbagLayout, einzelne Abschnitte werden auch mal mit Flowlayout gemacht, eine variable Anzahl an Checkboxen z.B. mit BoxLayout, dann natürlich noch CardLayout für umschaltbare Flächen usw.. Aber niemals nimmer nie nicht NullLayout.
 

dalco

Aktives Mitglied
hallo,
danke für die infos, damit muss ich mich dann mal beschäftigen, meine datenbank ist über die jahre gewachsen und da muss einiges geändert werden, hatte es halt nie gebraucht da desktop eben 100% und der zum glück kleine laptop mit nur 1300x800 px oder so war aber auch auf 100% alles scharf darstellt.

Irgendwie dubios, jetzt hast du full-hd oder mehr auf einem laptop mit 15zoll und musst dann künstlich alles vergrößern und (für mich) verschlechtern, weil man sonst ne lupe bräuchte ???
danke
Tino
 

Neumi5694

Top Contributor
Naja, Full HD auf 15" ist schon heftig. Ich hab einen 17-Zöller und da ist's schon hart an der Grenze, weswegen ich ihn meistens an einen 27" Bildschirm anschließe.

Mein aktuelles Handy hat auch eine kleinere Auflösung als mein voriges und ich bin sehr zufrieden damit. Während manche Apps automatisch skalierten, waren die Texte in anderen unleserlich klein. Mehr ist nicht immer besser.
 

dalco

Aktives Mitglied
Naja, Full HD auf 15" ist schon heftig. Ich hab einen 17-Zöller und da ist's schon hart an der Grenze, weswegen ich ihn meistens an einen 27" Bildschirm anschließe.

Mein aktuelles Handy hat auch eine kleinere Auflösung als mein voriges und ich bin sehr zufrieden damit. Während manche Apps automatisch skalierten, waren die Texte in anderen unleserlich klein. Mehr ist nicht immer besser.
ich weiß.... klar am monitor ist alles toll mit 100% echtheit, aber unterwegs ,ist doch irre, alles wird teurer, immer höhere auflösung und dann skalierst du mit 300% ???
Ich kauf mir einen Ferrari Motor und drossel ihn dann runter, dass er so fährt wie mein alter dacia....
 

dalco

Aktives Mitglied
hallo,
also ich habe nun mit dem Gridbaglauout alles so hinbekommen dass die inhalte zusammengeschoben werden und schön hinpassen.
Die Texte kann man auch passabel lesen aber die jpg. bei mir eine kleine Landesflagge zum Land (60x20px) steckt in einem ImageIcon und sieht eben pixelig, irgendwie schlecht aus beim laptop mit 125% skalierung.
Was kann ich da noch machen.
Ps. ich habe die flagge auch mal in 200x80 in fotoshop gemacht und sie dann im ImageIcon kleiner angezeigt...ist am laptop aber auch mieß
Ansonsten danke euch allen schonmal
Tino
 

Neumi5694

Top Contributor
"beim laptop mit 125% skalierung." Über Windows High Einstellung?
Da kannst du nichts machen, das erledigt das OS.

Wenn du Grafiken manuell skalieren lässt, gibt's verschiedene Algorithmen(ClearIQZ, Lanczos, Bikubisch, ...), aber bei so einem knappen Faktor wirst bei scharf gezeichneten Grafiken damit nie glücklich werden, die sind allesamt eher für Fotos gedacht.

Falls du für verschiedene Auflösungen verschiedene Grafiken verwenden willst, dann erledige das Skalieren mit Photoshop bis du zufrieden bist und hinterlege das Icon in verschiedenen Auflösungen. Frag dann anhand wovon auch immer ab, welches angezeigt werden soll.

ps: Wenn du das Programm auslieferst, stell sicher, dass du auch eine PS Lizenz hast :)
Selbst MS hatte in Windows schon mal ein Audiofile drin, das sie mit einer Software erstellt hatten, für welche sie keine Lizenz hatten. Das musste dann raus.
 

dalco

Aktives Mitglied
"beim laptop mit 125% skalierung." Über Windows High Einstellung?
Da kannst du nichts machen, das erledigt das OS.

Wenn du Grafiken manuell skalieren lässt, gibt's verschiedene Algorithmen(ClearIQZ, Lanczos, Bikubisch, ...), aber bei so einem knappen Faktor wirst bei scharf gezeichneten Grafiken damit nie glücklich werden, die sind allesamt eher für Fotos gedacht.

Falls du für verschiedene Auflösungen verschiedene Grafiken verwenden willst, dann erledige das Skalieren mit Photoshop bis du zufrieden bist und hinterlege das Icon in verschiedenen Auflösungen. Frag dann anhand wovon auch immer ab, welches angezeigt werden soll.

ps: Wenn du das Programm auslieferst, stell sicher, dass du auch eine PS Lizenz hast :)
Selbst MS hatte in Windows schon mal ein Audiofile drin, das sie mit einer Software erstellt hatten, für welche sie keine Lizenz hatten. Das musste dann raus.
hi,
also als fazit: entweder ich hab 100% echt scharf wie am desktop und sehe es kaum, oder 125% skalierung, welche irgendwie die bilder etwas verzerrt oder unscharf macht...und wegen fotoshop, was soll ich abfragen, habe als test 3 auflösungen vom icon gemacht, egal welche ich in das ImageIcon packe, sieht nicht gut aus....
Gibt es was besseres als ImageIcon, was vielleicht besser skalierbar ist?
Und was genau meinst du mit: "Programm auslieferst", es ist meine private Kletterdatenbank
gruß
Tino
 

Neumi5694

Top Contributor
Nochmal die Frage: Lässt du Windows skalieren? Dann hilft das so oder so nichts.
Nur wenn du selbst die Icons und Schriftarten anhand der Einstellung anpasst, kannst du da was machen.

ImageIcon ist ein Bitmap, gegebenenfalls mit Alpha-Channel, besser geht's nicht. Die verwendete Skalierungsmethode ist ausschlaggebend.

Mach mal den Versuch in Photoshop, ein kleines Icon um 25% größer zu machen, als Methode wähle die schlechteste, die darin verfügbar ist, müsste so was wie nearest neighbor sein oder so. Das wird auch ziemlich grottig ausschauen.

Wenn du's nur privat verwendest, hat sich die Frage nach dem Ausliefern natürlich erledigt.


Post mal Screenshots vom unvergrößerten Label mit Icon und vom skalierten. Mal sehen, was genau du mit pixlig meinst.
 

dalco

Aktives Mitglied
hallo,
keine ahnung was skaliert sonst, wenn nicht windows, bei dem eclipse selbst oder webseiten, geht es doch auch.
Und nochwas, ich habe bei Barrierefreiheit mal die schriftgröße auf 120% gestellt, geht überall, bei den icons, dem quellcode im eclipse aber bei meinem programm bleiben die JLabel unverändert?
Ünterstützt dann die windows-skalierung alles ausser das was man im eclipse selbst programmiert.
Vielleicht irgend eine ecliopse einstellung beim starten meiner datei?
mercy
Tino
 

Neumi5694

Top Contributor
Bei Eclipse skalieren Icons?
Bei Netbeans kann ich beim Starten als Parameter die Schriftgröße mit angeben.

Unterstützung für hohe Auflösungen gibt's in Java noch nicht so lange.
Was ich in meinem Programm gemacht hab, ist die dpi abzufragen und dann selbst die Anpassungen vorzunehmen, die ich haben will.
Das hat bei einem Kunden dazu geführt, dass zwei mal skaliert wurde, da er das über Windows machte.

Wie gesagt: Zeig mal deinen Code, poste dein Icon und Screenshots, wie's ausschaut.
Höhere Grafikqualität kriegst du, wenn die Icons entsprechend vorliegen und nicht Windows skaliert.
 

dalco

Aktives Mitglied
danke dir,
ich experimentiere noch etwas herum, vielleicht liegt es auch am laptop, ich finde das mit 125% auch eine openoffice calc tabelle irgendwie verwaschen aussieht.
muss jetzt was anderes machen, wenn es nicht besser wird poste ich die screenshots.
mercy euch allen
Tino
 

Neumi5694

Top Contributor
Ja, das ist das zu erwartende Ergebnis, wenn man ein Bild so wenig skaliert.
Und das ist es, was Windows macht - mit einem miesen Algorithmus, möcht ich dazu sagen.

Ich hab dir hier mal im Vergleich das Orignalbild mit AcdSee vergrößert, einmal mit Quader, einmal mit dem ClearIQZ Algorithmus.
Der richtige Algorithmus macht's. Und das kann man bei Windows nicht einstellen
(edit: dachte kurz das ginge, hat sich als falsch herausgestellt)

test_quader.png
test_cleariqz.png
 
Zuletzt bearbeitet:

dalco

Aktives Mitglied
andere programme, wie fotoshop haben doch auch kleine icons, symbole, etc...die sehen bei der skalierung besser aus,
weil die nicht mit java programmiert sind?
irgendwie denk ich das liegt an dem ImageIcon, egal, vielleicht find ich ja noch ne lösung,
dank dir nochmal

nochwas: warum sehen dann zb. die icons von windows unten im startmenu immer gleich gut und scharf aus?
ps. habe es auch mit .png versucht, sieht auch so aus :(
 
Zuletzt bearbeitet:

Neumi5694

Top Contributor
Windows vergrößert keine ImageIcons, sondern den Bildschirminhalt.

Programme wie Photoshop skalieren selbst, die Programme kriegen vom System die entsprechenden Befehle, Schriften zu vergrößern oder was auch immer. Dein Java-Programm hat so was nicht, das müsstest du selbst implementieren. Weiß allerdings nicht, welche Eigenschaften du abfragen musst. Ich hab's automatisiert von der dpi Einstellung abhängig gemacht.

1671022794002.png

Was auch einen Unterschied macht. ist dass deine Icons sehr verwasche Linien, möglicherweise auch Kompressionsartefakte haben. Versuch mal, Icons mit harten Linien und wenig Farben zu verwenden.

Die Icons unten im Startmenü werden nicht mit der schnellen Echtzeitskalierung vergrößert, das sind 2 vollkommen verschiedene Funktionen. ico Dateien liegen im Normalfall auch in verschiedenen Auflösungen vor, anders als PNGs, bei denen für jede Auflösung eine eigene Datei erstellt wird.
 

Neumi5694

Top Contributor
Damit du endlich glaubst, dass es nicht an Java/ImageIcon liegt, hab ich mal quick&dirty dein Testbeispiel mit Java skalieren lassen
Wichtig ist klarerweise nur der obere Teil, unten ist ja schon die Grützskalierung von Windows drübergerauscht.

1671024117783.png


Java:
var icon = new ImageIcon("e:\\adirectory\\test.jpg", "original");
var newIcon = new ImageIcon(icon.getImage().getScaledInstance(
    (int) (icon.getIconWidth() * 1.25),
    (int) (icon.getIconHeight() * 1.25),
    Image.SCALE_SMOOTH));
//jetzt noch JLabels als Icon zuweisen.
 

dalco

Aktives Mitglied
Damit du endlich glaubst, dass es nicht an Java/ImageIcon liegt, hab ich mal quick&dirty dein Testbeispiel mit Java skalieren lassen
Wichtig ist klarerweise nur der obere Teil, unten ist ja schon die Grützskalierung von Windows drübergerauscht.

Anhang anzeigen 19960


Java:
var icon = new ImageIcon("e:\\adirectory\\test.jpg", "original");
var newIcon = new ImageIcon(icon.getImage().getScaledInstance(
    (int) (icon.getIconWidth() * 1.25),
    (int) (icon.getIconHeight() * 1.25),
    Image.SCALE_SMOOTH));
//jetzt noch JLabels als Icon zuweisen.
danke, ich tüftle weiter herum
 

Ähnliche Java Themen

Neue Themen


Oben