在Java中创建三角形按钮

Man*_*nis 2 java geometry swing button

我正在尝试创建一个三角形按钮.

我不知道怎么做,所以我需要帮助创建,请向我解释如何创建它!

这是我想要实现的目标:

在此输入图像描述

有任何想法吗?

Osc*_*Ryz 6

这个,它看起来像你只需要继承JButton,并覆盖paintBorder()contains()方法

我创建这个不是那么快又脏的例子.我觉得它会更快但是我花了大约15分钟就来了.

一个三角形的jbutton

视觉上看起来很平坦,因为我总是使用相同的边框并且绘制相同的边框,但是您可能希望为onmouse提供不同的表示,包括,单击,启用,禁用等.

如果您运行此代码,您可能会看到在实际单击三角形内部时仅执行"单击"文本:

import java.awt.Polygon;
import java.awt.Shape;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class TriangleButton extends JButton {
    private Shape triangle = createTriangle();

    public void paintBorder( Graphics g ) {
        ((Graphics2D)g).draw(triangle);
    }
    public void paintComponent( Graphics g ) {
        ((Graphics2D)g).fill(triangle);
    }
    public Dimension getPreferredSize() {
        return new Dimension(200,100);
    }
    public boolean contains(int x, int y) {
        return triangle.contains(x, y);
    }

    private Shape createTriangle() {
        Polygon p = new Polygon();
        p.addPoint( 0   , 100 );
        p.addPoint( 100 , 0   );
        p.addPoint( 200 ,100  );
        return p;
    }
}

public class A {

    public static void main( String ... args ) {
        JFrame frame = new JFrame();
        final JButton b =  new TriangleButton();
        b.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("Click!");
            }
        });
        frame.add( new JPanel(){{add(b);}} );
        frame.setVisible(true);

    }
}
Run Code Online (Sandbox Code Playgroud)