11/04/12 18:06
ht-never
sto sviluppando un programma e mi piacerebbe creare un bottone personalizzato... solo che se creo un bottone che estende AbstractButton quando ci clicco sopra non succede nulla.
package glow; import javax.swing.*; import java.awt.*; @SuppressWarnings("serial") public class XButton extends AbstractButton { private Color color = Color.white; private String string = new String(); private Dimension dim = new Dimension(30,30); private Color borderColor = Color.white; Graphics graph; public XButton(String s, Color c, Color border) { this.color = c; this.string = s; this.borderColor = border; this.dim = new Dimension(s.length()*9,30); } public XButton(String s) { this.string = s; setPreferredSize(new Dimension(300,200)); } public XButton(Color c) { this.color = c; setPreferredSize(new Dimension(300,200)); } public XButton(Dimension dim,Color c) { this.color = c; setPreferredSize(dim); } public void paintComponent(Graphics g) { super.paintComponent(g); graph = g; paintInDeviceCoords(g); } public void paintInDeviceCoords(Graphics g) { /* assegna modo di riempimento sfumato */ ((Graphics2D)g).setPaint( new GradientPaint(0,0, Color.magenta, 300,200, Color.green) ); g.setColor(color); g.fillRect(0,0,(int)dim.getWidth(),(int)dim.getHeight()); g.setColor(Color.black); g.setFont(new Font(g.getFont().getFontName(),Font.PLAIN,18) ); g.drawString(string,5,20); ((Graphics2D)g).setStroke( new BasicStroke(5.0f) ); g.setColor(borderColor); g.drawLine(string.length()*9,0,string.length()*9,27); g.drawLine(0,0,0,27); g.drawLine(0,0,string.length()*9,0); g.drawLine(string.length()*9,28,0,28); g.drawLine(0,0,0,28); } public static void main(String[] args) { XButton ed = new XButton("Hello!",Color.gray,Color.red); System.out.println("ciao"); ed.addActionListener(new Action()); XFrame fr = new XFrame(); fr.setLayout(null); fr.setBounds(300,300,300,300); ed.setBounds(100,100,300,300); fr.add(ed); fr.setVisible(true); } };
aaa