LookAndFeel [Windows7] Nativ aussehnde ProgressBar

Tobse

Top Contributor
Hi Leute,
ich bin gerade daran, meine GUI zusammen zu basteln. Technisch gibts keine probleme, aber die Progress-Bar die Java in Windows7 (Vista weiss ich nicht) benutzt, sieht einfach hässlich aus. Alle anderen Anwendung und .NET malen die schöne grüne mit dem weissen flimern drin und Java ist hässlich blau. Kann ich dagegen was machen, bzw. die Progressbar vom OS zeichnen lassen?

Thnx, Gruß Tobse
 

Tobse

Top Contributor
Nicht hard-coded, es sollte aber schon Windows 7 sein, zumindest führ ichs darauf aus.
Java:
		try {
			javax.swing.UIManager.setLookAndFeel(
				javax.swing.UIManager.getSystemLookAndFeelClassName()
			);
		} catch (Exception ex) {

EDIT: So siehts aus:
bar.jpg
 
Zuletzt bearbeitet:

Tecwan

Aktives Mitglied
Bei mir kommt bei Verwendung deines Codes ein grüner Laufzeitbalken.
Ich habe auch Windows 7, nutze aber NetBeans, vielleicht liegt es daran.

Versuch doch mal folgenden Code, um festzustellen, welche LookAndFeels bei dir vorhanden sind:

Java:
try { 
    for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        System.out.println(info.getName());
    }
} catch (Exception e) {}

Bei mir ist die Ausgabe dann
Metal
Nimbus
CDE/Motif
Windows
Windows Classic

Um zB. Das LookAndFeel "Windows" einzustellen, ersetze System.out... durch
Java:
if ("Windows".equals(info.getName())) {
    javax.swing.UIManager.setLookAndFeel(info.getClassName());
    break;
}

Vielleicht liefert dir das schon einen Hinweis, wo das Problem liegen könnte.
Modifikation der jProgessBar?
Der blaue Balken scheint mir aus aus früheren Zeiten zu stammen, während das Frame aktuell aussieht.
 

Tobse

Top Contributor
Meine Ausgabe sieht exakt gleich aus:
Code:
Metal
Nimbus
CDE/Motif
Windows
Windows Classic

Ich probier jetzt mal das:
Java:
			javax.swing.UIManager.setLookAndFeel(
				//javax.swing.UIManager.getSystemLookAndFeelClassName()
				"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
			);

Und es ergibt... : einen blauen ladebalken. Kann das an meinem OS liegen? Zeig mal, was bei dir info.getClassName() beim Windows LAF ausgibt. Weil wenn das identisch ist, liegts am OS.
 

bERt0r

Top Contributor
Das ist ja lustig, anscheinend ein Bug vom BorderLayout. Setz mal nachdem du deine ganzen Components auf die ContentPane gepackt hast dein LookAndFeel neu und update den ComponentTree.
Java:
try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        SwingUtilities.updateComponentTreeUI(this);
 

Tobse

Top Contributor
In das Frame kommt eigentleich nur 1 Component - Die Progressbar:
Java:
		add(pbar);
		
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
			javax.swing.SwingUtilities.updateComponentTreeUI(this);
			paint(getGraphics());
		} catch (Exception ex) {}

Aber das ändert nichts. Ich teste jetzt mal ohne layout.

EDIT: Auch das hat nichts geändert... ?!?

Java:
		setLayout(null);
		
		pbar=...;
                ...
		add(pbar);
		
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
			javax.swing.SwingUtilities.updateComponentTreeUI(this);
			paint(getGraphics());
		} catch (Exception ex) {}
		
		setVisible(true);
 
Zuletzt bearbeitet:

Tecwan

Aktives Mitglied
System.out.println(info.getClassName()); liefert bei "Windows" ebenfalls com.sun.java.swing.plaf.windows.WindowsLookAndFeel

Was mir als Lösungsversuch einfällt, wäre etwas drastisch:
Java deinstallieren und neu installieren. Das geht ja relativ schnell, jedenfalls schneller als sich die in Frage kommenden Klassen einzeln vorzunehmen und zu durchforsten.

Und wenn das nicht funktioniert: Windows deinst... (nene)
Ich nehme an, du hast die grünen Balken in anderen Programmen auf deinem Rechner schon gesehen, so dass es nicht von deinem Win ausgeht.
 

Tecwan

Aktives Mitglied
Ich glaub ich habs. Schalte mal die Property stringPainted aus. Das ist die Prozentangabe.
Mit stringPainted(true) ändert sich die Farbe bei mir von Grün nach .foreground = [51,153,255] Blau!
Und außerdem flach, und nicht mit dem netten AquaLook.
Bei foreground lässt sich natürlich eine andere Farbe wählen, aber der Balken bleibt wohl flach, selbst wenn der Rahmen mit Schimmer gezeichnet wird.
 

Tobse

Top Contributor
Suupi, ich probiers gleich aus xD.
Jap, das wars. Funktioniert einwandfrei.
Zu Windows: Ja, den grünen balken hab ich überall wos nur denkbar ist. In der Taskleiste, beim Explorer, in Programmen, die mit ner höheren Sprache als Java geschrieben sind, z.B. C++, nur Java (ist ja C glaub) hats halt nich ;)
 
T

Tomate_Salat

Gast
ich würde C(++) nicht wirklich als höhere Sprache als Java bezeichnen. C++ ist nunmal hardware und Systemnäher. Verwende mal SWT, da hast du von vornerein das Aussehen von deinem OS.
 

b1zarRe

Bekanntes Mitglied
Um nicht direkt ein neues Thema aufzumachen, dachte ich evtl. das passt hier gut rein:

Kann mir jemand vielleicht gute Look&Feel FREE Links schicken??? Habe gegoogelt und überall nur kostenpflichtige gefunden oder welche die ich gesaugt habe, aber Probleme bei der Installation hatte... :(
 
T

Tomate_Salat

Gast
aber Probleme bei der Installation hatte... :(

Dann gehe ich mal von aus, dass du bei allen Probleme haben wirst. Beschreibe, in einem extra Thread bitte, wie du versucht hast, die LaFs zu installieren, dann kann man dir sicher helfen. Auch wenn das hier wirklich iwie passen sollte, empfielt es sich ein neues Thema zu erstellen. Schon alleine aus folgendem Grund:

Ein Thema mit 0 Antworten zieht wesentlich mehr Leser an, als ein Thema mit 12,18,100 Beiträgen.
 

b1zarRe

Bekanntes Mitglied
Okay werde ich so machen... Dachte das wäre verpöhnt, weil in anderen Foren heißts immer "musst du dafür einen Extrathread aufmachen" ^^

Aber ok.
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben