Hallo,
ich möchte Button farblich etwas beeinflussen und hab mir zum Test mal ein kleine Programm zusammen gestellt.
Dabei ist das Darstellen beim Aufruf nicht problematisch jedoch möchte ich die Farbe des Buttons bei der Menüauswahl
"File->Change" wechseln. Leider misslinge mir all meine Versuche.
Meine letzte Variante poste ich hier mal mit. Sicher mach ich hier eine Denkfehler, daher würd ich mich freuen, wenn
mir vielleicht jemand einen Tipp geben könnte. Ich habs mit dem Neuzeichnen einfach noch nicht so recht begriffen.
Viele Grüße
ich möchte Button farblich etwas beeinflussen und hab mir zum Test mal ein kleine Programm zusammen gestellt.
Dabei ist das Darstellen beim Aufruf nicht problematisch jedoch möchte ich die Farbe des Buttons bei der Menüauswahl
"File->Change" wechseln. Leider misslinge mir all meine Versuche.
Meine letzte Variante poste ich hier mal mit. Sicher mach ich hier eine Denkfehler, daher würd ich mich freuen, wenn
mir vielleicht jemand einen Tipp geben könnte. Ich habs mit dem Neuzeichnen einfach noch nicht so recht begriffen.
Viele Grüße
Code:
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;
import java.awt.Event;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import javax.swing.KeyStroke;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
/**
* @author
*
*/
public class GradientButton extends JFrame {
private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null;
private JMenu fileMenu = null;
private JMenuItem changeMenuItem = null;
private JButton jButton = null;
final static Color DEFAULT = new java.awt.Color(255,80,80);
final static Color CHANGE = new java.awt.Color(195,206,230);
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton() {
protected void paintComponent(Graphics gra) {
Graphics g = paintButtonColor(gra,this,DEFAULT);
getUI().paint(g, this);
}
};
jButton.setPreferredSize(new java.awt.Dimension(50,20));
jButton.setMargin(new Insets(4, 4, 4, 4));
jButton.setText("JoJo");
}
return jButton;
}
/**
*
* @param gra
* @param button
* @param c
* @return
*/
private Graphics paintButtonColor(Graphics gra, JButton button, Color c) {
Graphics2D g = (Graphics2D) gra;
int w = button.getWidth();
int h = button.getHeight();
int newH = h/5 * 2;
GradientPaint gradientPaint = new GradientPaint(0, 0,
c,
0, newH,
Color.WHITE,
true);
g.setPaint(gradientPaint);
g.fillRect(0, 0, w, h);
return g;
}
/**
*
*
*/
private void changeColor() {
Graphics g = paintButtonColor(jButton.getGraphics(),jButton, CHANGE);
jButton.getUI().paint(g, jButton);
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(getJJMenuBar());
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("Application");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
jContentPane = new JPanel();
jContentPane.setLayout(new GridBagLayout());
jContentPane.add(getJButton(), gridBagConstraints);
}
return jContentPane;
}
/**
* This method initializes jJMenuBar
*
* @return javax.swing.JMenuBar
*/
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getFileMenu());
}
return jJMenuBar;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getFileMenu() {
if (fileMenu == null) {
fileMenu = new JMenu();
fileMenu.setText("File");
fileMenu.add(getChangeMenuItem());
}
return fileMenu;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getChangeMenuItem() {
if (changeMenuItem == null) {
changeMenuItem = new JMenuItem();
changeMenuItem.setText("Chage");
changeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, Event.CTRL_MASK, true));
changeMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
changeColor();
}
});
}
return changeMenuItem;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GradientButton application = new GradientButton();
application.show();
}
/**
* This is the default constructor
*/
public GradientButton() {
super();
initialize();
}
}