Nimbus Überschrift

ThorstieB

Mitglied
HI vielen Dank für die wichtigen Hinweise, leider ist in der Demo und auf der HP kein Hinweis, wie ich eine solche Art Überschrift realisieren kann.
 
T

Tomate_Salat

Gast
Du musst einfach nur einen Border setzen:
Java:
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();
panel.setBorder(new TitledBorder("Und hier der Titel"));
frame.add(panel, BorderLayout.CENTER);
 

ThorstieB

Mitglied
nein, das ist es leider nicht, denn dann steht der Title optisch einfach über dem Panel. Es geht mir wirklich, wie unter dem Link zu sehen um diese größere Schrift mit dem Farbverlauf als Hintergrund.
und ich finde leider nirgends eine Beschreibung dazu.

mfg
Thorsten
 
T

Tomate_Salat

Gast
doch zum Teil. Aber das mit dem Hintergrund ist denke ich ein Label, an dem ein wenig rumgespielt wurde:
Code:
UIManager.put(TITLE_GRADIENT_COLOR1_KEY,Color.getHSBColor(hsb[0]-.013f, .15f, .85f));
UIManager.put(TITLE_GRADIENT_COLOR2_KEY,Color.getHSBColor(hsb[0]-.005f, .24f, .80f));
UIManager.put(TITLE_FOREGROUND_KEY,Color.getHSBColor(hsb[0], .54f, .40f));

Habe ich jz mal auf die schnelle von dem Codestück hier

Wenn du die Überschrift vom titleborder weg lässt und als Child ganz oben so ein überabeitetes Label setzt, dann bekommst du soetwas hin.
 

ThorstieB

Mitglied
Also meine Funktion schaut aktuell so aus:

Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;


public class test extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		
		try {
		    // Set System L&F
	        UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
	    } 
	    catch (UnsupportedLookAndFeelException e) {
	       // handle exception
	    }
	    catch (ClassNotFoundException e) {
	       // handle exception
	    }
	    catch (InstantiationException e) {
	       // handle exception
	    }
	    catch (IllegalAccessException e) {
	       // handle exception
	    }
		
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					test frame = new test();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public test() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		JLabel label = new JLabel();
		add(label,BorderLayout.CENTER);
		
		JPanel panel = new JPanel();
		panel.setBorder(new TitledBorder(""));
		add(panel, BorderLayout.CENTER);
	}

}


Leider habe ich keine Vorstellung von dem was du mir sagen magst, ich weiß also mit dem Label nichts anzufangen und wahllos einfügen kann ich die drei Zeilen leider auch nicht.
vielen dank für deine Hilfe
 
Zuletzt bearbeitet:
V

Verzweifelt

Gast
Hallo an alle,

ich suche ebenfalls eine Antwort auf die Frage von ThorstieB. Ich komme zwar sehr nah an die Lösung, aber etwas Fehlt noch und ich weiß nicht was ich machen muss. Hier meine bisherige Lösung, wobei die letzte Zeile die ausschlaggebende ist:

Java:
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(300, 100));
p.setBorder(new TitledBorder(null, "Titel", TitledBorder.LEADING, TitledBorder.BELOW_TOP, new Font(null, Font.BOLD, 30), null));

Was jetzt noch fehlt ist der Farbverlauf hinter der Titelüberschrift. Kann mir vielleich jemand helfen und sagen: Welche Code-Zeile(n) mir noch fehlt? Den Quellcode des Demo-Beispiels-SwingSet3 habe ich mir bereits angeschaut. Auf Grund meiner bisherigen Kenntnisse hat mir das aber nicht weitergeholfen.

Das Nimbus-LookAndFeel habe ich über folgende Zeilen akiviert:

Java:
try {
	for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
		if ("Nimbus".equals(info.getName())) {
			UIManager.setLookAndFeel(info.getClassName());
			break;
			}
		}
	} catch (Exception e) {
}

Vielen Dank an alle die mir dabei helfen können.
 
V

Verzweifelt

Gast
Hallo an alle,

ich suche ebenfalls eine Antwort auf die Frage von ThorstieB. Ich komme zwar sehr nah an die Lösung, aber etwas Fehlt noch und ich weiß nicht was ich machen muss. Hier meine bisherige Lösung, wobei Zeile 3 die ausschlaggebende ist:

Java:
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(300, 100));
p.setBorder(new TitledBorder(null, "Titel", TitledBorder.LEADING, TitledBorder.BELOW_TOP, new Font(null, Font.BOLD, 30), null));

Was jetzt noch fehlt ist der Farbverlauf hinter der Titelüberschrift. Kann mir vielleich jemand helfen und sagen: Welche Code-Zeile(n) mir noch fehlt? Den Quellcode des Demo-Beispiels-SwingSet3 habe ich mir bereits angeschaut. Scheinbar sollen die Farben irgendwie über den nachfolgenden Code geändert werden. Bei mir tut sich da allerdings nichts.

Java:
Color controlColor = UIManager.getColor("control");
Color titleColor = UIManager.getColor(usingNimbus()? "nimbusBase" : "activeCaption");
		
if (titleColor == null) titleColor = controlColor;
		
float hsb[] = Color.RGBtoHSB(titleColor.getRed(), titleColor.getGreen(), titleColor.getBlue(), null);
		
UIManager.put(TITLE_GRADIENT_COLOR1_KEY, Color.getHSBColor(hsb[0]-.013f, .15f, .85f));
UIManager.put(TITLE_GRADIENT_COLOR2_KEY, new Color(176,179,50)); //Color.getHSBColor(hsb[0]-.005f, .24f, .80f));
UIManager.put(TITLE_FOREGROUND_KEY, new Color(169,46,34)); //Color.getHSBColor(hsb[0], .54f, .40f));

try {
	for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
		if ("Nimbus".equals(info.getName())) {
			UIManager.setLookAndFeel(info.getClassName());
			break;
			}
		}
	} catch (Exception e) {
}

Und hier noch die fehlende Methode:

Java:
public static boolean usingNimbus() {
	return UIManager.getLookAndFeel().getName().equals("Nimbus");
}

Vielen Dank an alle die mir dabei helfen können.
 

X5-599

Top Contributor
Hallo,

Also so wie ich das sehe brauchst du statt einer TitledBorder die Klassen: RoundedTitledBorder, RoundedBorder sowie die Utilities Klasse des Beispiels.

Dann machst du sowas wie:
Java:
setBorder(new RoundedTitleBorder("Der Titel", UIManager.getColor(TITLE_GRADIENT_COLOR1_KEY), UIManager.getColor(TITLE_GRADIENT_COLOR2_KEY)));
setFont(UIManager.getFont(TITLE_FONT_KEY));
Color bg = Utilities.deriveColorHSB(UIManager.getColor("Panel.background"), 0, 0, -.06f);
setBackground(bg);
setForeground(UIManager.getColor(TITLE_FOREGROUND_KEY));

Das habe ich mir so aus der DemoPanel Klasse des Beispiels zusammengereimt. Keine Garantie also :D

Gruß
 

Kar

Mitglied
Hab's mal versucht:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LayoutManager;
import java.awt.PopupMenu;
import java.awt.RenderingHints;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;

public class TitledPanel extends JPanel {
	private String title;
	private Font titleFont;
	private boolean gradient;
	private Color titleColor;
	private Color gradientColor1;
	private Color gradientColor2;
	private JPanel titlePanel;
	private JPanel contentPanel;
	private JLabel titleLbl;
	
	public TitledPanel(String title, LayoutManager mgr) {
        setLayout(new BorderLayout());
		this.title = title;
		init();
		contentPanel.setLayout(mgr);
		add(contentPanel, BorderLayout.CENTER);
		setBorder(new LineBorder(gradientColor1, 1, true));
	}
	
	public TitledPanel(String title, Font titleFont, Color titleColor, Color gradientColor1,
			Color gradientColor2, boolean gradient, LayoutManager mgr) {
        setLayout(new BorderLayout());
		this.title = title;
		init(titleFont, titleColor, gradientColor1, gradientColor2, gradient);
		contentPanel.setLayout(mgr);
		add(contentPanel, BorderLayout.CENTER);
		setBorder(new LineBorder(gradientColor1, 1, true));
	}
	
	@Override
	public Component add(Component comp) {
		return contentPanel.add(comp);
	}
	
	@Override
	public void add(PopupMenu popup) {
		contentPanel.add(popup);
	}
	
	@Override
	public Component add(Component comp, int index) {
		return contentPanel.add(comp, index);
	}
	
	@Override
	public Component add(String name, Component comp) {
		return contentPanel.add(name, comp);
	}
	
	@Override
	public void add(Component comp, Object constraints, int index) {
		contentPanel.add(comp, constraints, index);
	}
	
	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
		initTitlePanel();
	}

	public Font getTitleFont() {
		return titleFont;
	}

	public void setTitleFont(Font titleFont) {
		this.titleFont = titleFont;
		initTitlePanel();
	}

	public boolean isGradient() {
		return gradient;
	}

	public void setGradient(boolean gradient) {
		this.gradient = gradient;
		initTitlePanel();
	}
	
	public Color getTitleColor() {
		return titleColor;
	}
	
	public void setTitleColor(Color titleColor) {
		this.titleColor = titleColor;
		initTitlePanel();
	}

	public Color getGradientColor1() {
		return gradientColor1;
	}

	public void setGradientColor1(Color gradientColor1) {
		this.gradientColor1 = gradientColor1;
		initTitlePanel();
	}
	
	public Color getGradientColor2() {
		return gradientColor2;
	}

	public void setGradientColor2(Color gradientColor2) {
		this.gradientColor2 = gradientColor2;
		initTitlePanel();
	}
	
	private void init() {
		this.titleFont = new Font("SansSerif", Font.BOLD, 20);
		this.gradient = true;
		this.titleColor = new Color(47, 76, 102);
		this.gradientColor1 = new Color(162, 187, 207);
		this.gradientColor2 = new Color(199, 202, 208);
		this.contentPanel = new JPanel();
		this.titleLbl = new JLabel(title);
		initTitlePanel();
	}
	
	private void init(Font titleFont, Color titleColor, Color gradientColor1,
			Color gradientColor2, boolean gradient) {
		this.titleFont = titleFont;
		this.gradient = gradient;
		this.titleColor = titleColor;
		this.gradientColor1 = gradientColor1;
		this.gradientColor2 = gradientColor2;
		this.contentPanel = new JPanel();
		this.titleLbl = new JLabel(title);
		initTitlePanel();
	}
	
	private void initTitlePanel() {
		if(gradient) {
			titlePanel = new JPanel() {
				@Override
				protected void paintComponent(Graphics g) {
					Graphics2D g2d = (Graphics2D) g;
					g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
							RenderingHints.VALUE_ANTIALIAS_ON);
					GradientPaint gp = new GradientPaint(0, 0, gradientColor1,
							getWidth(), getHeight(), gradientColor2);
					g2d.setPaint(gp);
					g2d.fillRect(0, 0, getWidth(), getHeight());
					super.paintComponent(g);
				}
			};
            titlePanel.setOpaque(false);
		} else {
			titlePanel = new JPanel();
            titlePanel.setBackground(gradientColor1);
            titlePanel.setOpaque(true);
		}
		titlePanel.setLayout(null);
		int width = getFontMetrics(titleFont).stringWidth(title);
		int height = getFontMetrics(titleFont).getHeight();
		titleLbl.setForeground(titleColor);
		titleLbl.setFont(titleFont);
		titleLbl.setBounds(10, 0, width, height);
		titlePanel.setPreferredSize(new Dimension(width, height));
		titlePanel.add(titleLbl);
		remove(titlePanel);
		add(titlePanel, BorderLayout.NORTH);
	}
}

Java:
TitledPanel panel = new TitledPanel("Test", new FlowLayout());
panel.add(new JButton("Test"));

Sieht so aus:
testmetalg0kgg.png

http://www.abload.de/img/testmetalg0kgg.png

Bzw. Nimbus:
testnimbust6kd0.png

http://www.abload.de/img/testnimbust6kd0.png
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R LookAndFeel Wie kann man die Textfarbe der Nimbus ProgressBar nach Füllstand ändern? AWT, Swing, JavaFX & SWT 2
M JTabbedPane verändern mit Nimbus Look and Feel AWT, Swing, JavaFX & SWT 1
V LookAndFeel JSpinner Hintergrund Farbe mit Nimbus LaF AWT, Swing, JavaFX & SWT 0
H Nimbus ProgressBar Colors AWT, Swing, JavaFX & SWT 9
H Nimbus L&F TitledBorder AWT, Swing, JavaFX & SWT 2
V Nimbus Look and Feel register Region problem AWT, Swing, JavaFX & SWT 5
V Nimbus Look And Feel Button textForeground AWT, Swing, JavaFX & SWT 8
M jTabbedPain und Nimbus AWT, Swing, JavaFX & SWT 4
T Nimbus JButton: Zeilenumbruch korrigieren? AWT, Swing, JavaFX & SWT 9
N Nimbus Look & Feel AWT, Swing, JavaFX & SWT 4
hdi LookAndFeel Nimbus BUG mit JTabbedPane?! AWT, Swing, JavaFX & SWT 5
Y LookAndFeel Nimbus einschalten geht nicht AWT, Swing, JavaFX & SWT 31
V Swing Nimbus Look And Feel verschiedene Buttons AWT, Swing, JavaFX & SWT 8
A LookAndFeel Rollover Effekt bei JTabbedPane deaktivieren (Nimbus) AWT, Swing, JavaFX & SWT 8
B LookAndFeel Cell Renderer für JTable bei Nimbus Look and Feel AWT, Swing, JavaFX & SWT 2
P LookAndFeel nimbus JLabel undurchsichtig opaque funktioniert nicht AWT, Swing, JavaFX & SWT 4
R LookAndFeel Nimbus ändert Programmausführung AWT, Swing, JavaFX & SWT 8
Y LookAndFeel JTabbedPane: Tab-Farbe mit Nimbus setzen AWT, Swing, JavaFX & SWT 3
N Swing Nimbus arbeitet nicht korrekt korrekt bei setEnabled() für JMenuItem AWT, Swing, JavaFX & SWT 2
C LookAndFeel Nimbus TabbedPane Backgroundcolor AWT, Swing, JavaFX & SWT 12
S Metal-Buttons so aussehen lassen wie Nimbus Buttons? AWT, Swing, JavaFX & SWT 3
Fu3L Keine Transparenten JTextComponents möglich mit Nimbus L&F? AWT, Swing, JavaFX & SWT 5
S Swing JTable in Nimbus AWT, Swing, JavaFX & SWT 4
O nimbus Abbrechen ok vertauscht AWT, Swing, JavaFX & SWT 2
E Look & Feel - Nimbus AWT, Swing, JavaFX & SWT 12
A Nimbus eigener Painter funzt nicht AWT, Swing, JavaFX & SWT 11
data89 Nimbus Look and Feel als gepackte JAR-Datei AWT, Swing, JavaFX & SWT 3
T Swing: TaskPane mit Nimbus LnF? AWT, Swing, JavaFX & SWT 4
M Problem Nimbus Look&Feel AWT, Swing, JavaFX & SWT 2
oliver1974 Nimbus Look & Feel und die Ausgaben nach Standardaus. AWT, Swing, JavaFX & SWT 4
C JavaFX Tief setzen in der Überschrift einer Tabellenspalte AWT, Swing, JavaFX & SWT 3
E SWT Popupmenu auf der Überschrift eines swt.widgets.Table verhindern? AWT, Swing, JavaFX & SWT 3
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
C JTappedPane Mouselistener auf Überschrift Registerkarte AWT, Swing, JavaFX & SWT 2
N Swing JTable Überschrift ohen scrollbar? AWT, Swing, JavaFX & SWT 2
aze JDialog immer so breit ,dass die Überschrift sichtbar ist AWT, Swing, JavaFX & SWT 6
J Frage zu JTable und der Überschrift/Titelzeile AWT, Swing, JavaFX & SWT 2
P Umrahmte Überschrift AWT, Swing, JavaFX & SWT 2
G Überschrift einfügen! AWT, Swing, JavaFX & SWT 6
R JTable Überschrift nicht zu sehen AWT, Swing, JavaFX & SWT 3
G Zweizeilige Spalten-Überschrift bei JTable AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben