Kann man natütlich machen. Hier ein Beispiel um einen Button in einem <> Viereck zu zeichnen:
[code=Java]
import java.awt.AlphaComposite;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.image.BufferedImage;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class QuadrangleButton extends JButton {
public QuadrangleButton(String text) {
super(text);
}
@Override
public Dimension getPreferredSize() {
Dimension dim = super.getPreferredSize();
return new Dimension(dim.width,dim.height+8);
}
@Override
public Dimension getMinimumSize() {
return getPreferredSize();
}
@Override
public void paint(Graphics g) {
BufferedImage temp = new BufferedImage(getWidth(),getHeight(),BufferedImage.TYPE_INT_ARGB);
Graphics2D gi = temp.createGraphics();
Polygon pol = new Polygon(
new int[] {getWidth()/2,0,getWidth()/2,getWidth()},
new int[] {0,getHeight()/2,getHeight(),getHeight()/2},
4);
gi.fillPolygon(pol);
gi.setComposite(AlphaComposite.SrcIn);
super.paint(gi);
g.drawImage(temp,0,0,null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("TraingleButton");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new QuadrangleButton("Dreieck"));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
[/code]