Soyez le premier à donner votre avis sur cette source.
Snippet vu 15 655 fois - Téléchargée 21 fois
import java.awt.BasicStroke; import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import javax.swing.JFrame; public class FrmMain extends JFrame { private static final long serialVersionUID = 1L; private final static int BULLE_WIDTH = 50; private final static Color BULLE_COLOR = Color.BLUE; public FrmMain() { setBounds(0, 0, BULLE_WIDTH * 2, BULLE_WIDTH * 2); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(BULLE_COLOR); g2d.setStroke(new BasicStroke(3)); g2d.drawOval(10, 50, BULLE_WIDTH, BULLE_WIDTH); GradientPaint gradient = new GradientPaint(BULLE_WIDTH / 2, 50, BULLE_COLOR, BULLE_WIDTH / 2, 50 + BULLE_WIDTH , Color.white); g2d.setPaint(gradient); g2d.fillOval(10, 50, BULLE_WIDTH, BULLE_WIDTH); gradient = new GradientPaint(BULLE_WIDTH / 2, 50, Color.white, BULLE_WIDTH / 2, 50 + BULLE_WIDTH / 2, new Color(BULLE_COLOR.getRed(), BULLE_COLOR.getGreen(), BULLE_COLOR.getBlue(), 0)); g2d.setPaint(gradient); g2d.fillOval(10 + BULLE_WIDTH / 5, 50, 5 * BULLE_WIDTH / 8, BULLE_WIDTH / 3); } public static void main(String[] args) { new FrmMain(); } }
3 mai 2011 à 15:27
J'ai trouvé l'idée vraiment sympa et donc je l'ai essayé
Seulement ca ne donne pas le résultat escompté!
j'ai simplement utilisé les 5 constructeurs de MainButton et ai affiché les boutons dans une JFrame
le resultat et que pour tous les constructeurs on obtiens un "demi bouton" comprenez qu'on ne voit que l'hemisphere nord du boutton
de plus le constructeur MainButton(Color c) ne change pas la couleur
et MainButton(Icon icon) rajoute licone DERRIERE le dit boutton , elle est donc invisible...
bon je n'ai fait que tester le code fournit et ne me suis pas encore pencher sur les eventuelles erreurs puisque je ne me suis pas encore essayé a la personalisation de composants
par contre si vous aviez une version corrigée ca m'interresserait! ^^
Amicalement, Joe.
23 oct. 2009 à 23:23
ca code tre fort
4 juin 2007 à 19:20
Bien vu ;)
DarK Sidious
4 juin 2007 à 13:50
J'ai trouvé ca tellement génial que j'en ai fait ma propre adaptation.
Je vous la mets à disposition :
package com.ui.comp;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JButton;
public class MainButton extends JButton {
private static final long serialVersionUID = 1L;
private final int BULLE_WIDTH = 50;
private Color BULLE_COLOR = Color.green.darker(); // @jve:decl-index=0:
private Color BULLE_COLOR_B = BULLE_COLOR.brighter(); // @jve:decl-index=0:
private Color currentColor = BULLE_COLOR;
private int x = 5;
private int y = 5;
public MainButton() {
initialize();
}
public MainButton(Color BULLE_COLOR) {
this.BULLE_COLOR = BULLE_COLOR.darker();
initialize();
}
public MainButton(Icon arg0) {
super(arg0);
initialize();
}
public MainButton(String arg0) {
super(arg0);
initialize();
}
public MainButton(Action arg0) {
super(arg0);
initialize();
}
public MainButton(String arg0, Icon arg1) {
super(arg0, arg1);
initialize();
}
/**
* This method initializes this
*
*/
private void initialize() {
this.setFocusPainted(false);
this.setSize(new Dimension(BULLE_WIDTH + 10, BULLE_WIDTH + 10));
this.setBorderPainted(false);
this.setContentAreaFilled(false);
this.setOpaque(false);
this.addMouseListener(new java.awt.event.MouseListener() {
public void mouseEntered(java.awt.event.MouseEvent e) {
// si la souris passe au dessus du bouton et que le bouton est
// actif...
if (isEnabled()) {
// on change la couleur
currentColor = BULLE_COLOR_B;
}
}
public void mouseClicked(java.awt.event.MouseEvent e) {
}
public void mousePressed(java.awt.event.MouseEvent e) {
x += 2;
y += 2;
}
public void mouseReleased(java.awt.event.MouseEvent e) {
x -= 2;
y -= 2;
}
public void mouseExited(java.awt.event.MouseEvent e) {
// si la souris sort du bouton et que le bouton est actif...
if (isEnabled()) {
// on rétablit la couleur d'origine
// System.out.println("couleur d'origine");
currentColor = BULLE_COLOR;
}
}
});
}
@Override
public void paint(Graphics arg0) {
super.paint(arg0);
Graphics2D g2d = (Graphics2D) arg0;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(currentColor);
g2d.setStroke(new BasicStroke(3));
g2d.drawOval(x, y, BULLE_WIDTH, BULLE_WIDTH);
GradientPaint gradient = new GradientPaint(BULLE_WIDTH / 2, y,
currentColor, BULLE_WIDTH / 2, y + BULLE_WIDTH, Color.white);
g2d.setPaint(gradient);
g2d.fillOval(x, y, BULLE_WIDTH, BULLE_WIDTH);
gradient = new GradientPaint(BULLE_WIDTH / 2, y, Color.white,
BULLE_WIDTH / 2, y + BULLE_WIDTH / 2, new Color(currentColor
.getRed(), currentColor.getGreen(), currentColor
.getBlue(), 0));
g2d.setPaint(gradient);
g2d.fillOval(x + BULLE_WIDTH / 5, y, 5 * BULLE_WIDTH / 8,
BULLE_WIDTH / 3);
}
} // @jve:decl-index=0:visual-constraint="10,10"
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.