Hallo zusammen,
ich gebe die google-Suche und hier die Forensuche auf.
Ich suche seit mehreren Tagen nach einer Lösung. Und zwar geht es um die paintComponent Methode bei JComponents, speziell bei mir bei JMenuBar.
Und zwar will ich zum Test erstmal ein GradientPaint als Background einfügen, statt der Standardfarben. Wenn ich die paintComponent-Methode jedoch entsprechend überschreibe, wird das JMenu, was geadded wird nicht mehr anzeigt, nur wenn man mit der Maus drüber fährt, sprich es ist verdeckt.
Das gleiche passiert, wenn ich die paintComponent-Methode bei einem JTextField überschreibe. Hier wollte ich auch einen GradientPaint in den Background zeichnen, jedoch wird dann der Input und der Maustextcursor dadrin nicht mehr angezeigt.
Anbei der Code.
Ich hoffe, Ihr könnt mir weiterhelfen, danke schon mal!
Auszug aus der View:
Die Komponentenklasse:
ich gebe die google-Suche und hier die Forensuche auf.
Ich suche seit mehreren Tagen nach einer Lösung. Und zwar geht es um die paintComponent Methode bei JComponents, speziell bei mir bei JMenuBar.
Und zwar will ich zum Test erstmal ein GradientPaint als Background einfügen, statt der Standardfarben. Wenn ich die paintComponent-Methode jedoch entsprechend überschreibe, wird das JMenu, was geadded wird nicht mehr anzeigt, nur wenn man mit der Maus drüber fährt, sprich es ist verdeckt.
Das gleiche passiert, wenn ich die paintComponent-Methode bei einem JTextField überschreibe. Hier wollte ich auch einen GradientPaint in den Background zeichnen, jedoch wird dann der Input und der Maustextcursor dadrin nicht mehr angezeigt.
Anbei der Code.
Ich hoffe, Ihr könnt mir weiterhelfen, danke schon mal!
Auszug aus der View:
Code:
JMenuBar topMenuBar = new GradientTopBar();
// Create menuButton - File
JMenu menuFile = new JMenu("Datei");
menuFile.setBackground(Color.white);
// Create menuItem
JMenuItem itemSettings = new vMenuItem("Einstellungen", "graphics/iconsTopMenu/menuSettings.png");
JMenuItem itemExit = new vMenuItem("Beenden", "graphics/iconsTopMenu/menuExit.png");
menuFile.add(itemSettings);
menuFile.add(itemExit);
topMenuBar.add(menuFile);
Die Komponentenklasse:
Code:
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JMenuBar;
public class GradientTopBar extends JMenuBar {
private Color startColor;
private Color endColor;
public GradientTopBar() {
super();
startColor = Color.white;
endColor = Colors.Gray.color();
}
public GradientTopBar(Color startColor, Color endColor) {
super();
this.startColor = startColor;
this.endColor = endColor;
}
public void setStartColor(Color startColor) {
this.startColor = startColor;
}
public void setEndColor(Color endColor) {
this.endColor = endColor;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
GradientPaint gradientPaint = new GradientPaint( 0 , 0 , startColor , 0, super.getHeight(), endColor );
Graphics2D g2d = (Graphics2D) g;
g2d.setPaint(gradientPaint);
g2d.setColor(Color.red);
g2d.drawRect(0, 0, super.getWidth(), super.getHeight());
g.dispose();
}
}