Auf Thema antworten

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]



Oben