以下是我的代码,但是点击椭圆外到本来的按钮方形区域依然会触发事件,怎么解决。import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
//
public class StartJButton extends JButton implements MouseListener{
private static final long serialVersionUID = 1L;
public StartJButton(){
this.setBackground(new Color(65, 201, 252, 50));
this.addMouseListener(this);
}
public StartJButton(String text){
super(text);
this.setBackground(new Color(65, 201, 252, 50));
this.addMouseListener(this);
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(super.getBackground());
g2.fillOval(0, 0, super.getWidth(), super.getHeight());
super.setContentAreaFilled(false);
g2.setColor(Color.white);
Font myFont = new Font("MV Boli",Font.BOLD,40);
this.setFont(myFont);
this.setForeground(Color.WHITE);
this.setFocusPainted(false);
super.paintComponent(g);
}
public void paintBorder(Graphics g){
//super.paintBorder(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.gray);
g.drawOval(0, 0, super.getWidth() , super.getHeight());
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
//this.setBackground(Color.white);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
this.setBackground(new Color(65, 201, 252, 200));
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
this.setBackground(new Color(65, 201, 252, 50));
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
this.setBackground(new Color(65, 201, 252, 150));
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
this.setBackground(new Color(65, 201, 252, 50));
}
}