java做的圆角矩形按钮

                                     

 

 

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Shape;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.RoundRectangle2D;

import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;

public class MyButton extends JButton implements MouseListener {
 private Shape shape = null;

 private Color click = new Color(0, 0, 113);// 按下时的颜色

 private Color quit = new Color(237, 234, 228);// 离开时颜色

 public MyButton(String s) {
  super(s);
  addMouseListener(this);
  setContentAreaFilled(false);// 是否显示外围矩形区域 选否
 }

 public MyButton() {
  super();
  addMouseListener(this);
 }

 public MyButton(String text, Icon icon) {
  super(text, icon);
  addMouseListener(this);
 }

 public MyButton(Icon icon) {
  super(icon);
  addMouseListener(this);
 }

 public void setColor(Color c, Color q) {
  click = c;
  quit = q;
 }

 public void mouseClicked(MouseEvent e) {
  System.out.println("mouseClicked");
 }

 public void mousePressed(MouseEvent e) {
  System.out.println("mousePressed");
 }

 public void mouseReleased(MouseEvent e) {
  System.out.println("mouseReleased");
 }

 public void mouseExited(MouseEvent e) {
  System.out.println("mouseExited");
 }

 public void mouseEntered(MouseEvent e) {
  System.out.println("mouseEntered");
 }

 public void paintComponent(Graphics g) {
  //如果按下则为CLICK色 否则为 QUIT色
  if (getModel().isArmed()) {
   g.setColor(click);
  } else {
   g.setColor(quit);
  }
  //填充圆角矩形区域 也可以为其它的图形
  g
    .fillRoundRect(0, 0, getSize().width - 1, getSize().height - 1,
      20, 20);
  //必须放在最后 否则画不出来
  super.paintComponent(g);
 }

 public void paintBorder(Graphics g) {
  //画边界区域
  g.setColor(click);
  g
    .drawRoundRect(0, 0, getSize().width - 1, getSize().height - 1,
      20, 20);
 }

 public boolean contains(int x, int y) {
  //判断点(x,y)是否在按钮内
  if (shape == null || !(shape.getBounds().equals(getBounds()))) {
   shape = new RoundRectangle2D.Float(0, 0, getWidth(), getHeight(),
     20, 20);
  }
  return shape.contains(x, y);
 }

 public static void main(String[] argv) {
  JFrame f = new JFrame();
  f.setSize(400, 300);

  MyButton btn = new MyButton("button");

  f.getContentPane().add(btn, BorderLayout.NORTH);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.setVisible(true);
 }
}

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将Java图形界面按钮的边框更改为圆角边框,您可以使用以下代码: ``` import javax.swing.*; import java.awt.*; public class RoundButton extends JButton { public RoundButton(String label) { super(label); Dimension size = getPreferredSize(); size.width = size.height = Math.max(size.width, size.height); setPreferredSize(size); setContentAreaFilled(false); } protected void paintComponent(Graphics g) { if (getModel().isArmed()) { g.setColor(Color.lightGray); } else { g.setColor(getBackground()); } g.fillRoundRect(0, 0, getSize().width-1, getSize().height-1, 20, 20); super.paintComponent(g); } protected void paintBorder(Graphics g) { g.setColor(getForeground()); g.drawRoundRect(0, 0, getSize().width-1, getSize().height-1, 20, 20); } Shape shape; public boolean contains(int x, int y) { if (shape == null || !shape.getBounds().equals(getBounds())) { shape = new RoundRectangle2D.Float(0, 0, getWidth(), getHeight(), 20, 20); } return shape.contains(x, y); } } ``` 您可以在创建按钮时使用RoundButton代替JButton: ``` JButton button = new RoundButton("Click Me"); ``` 这将创建一个具有圆角边框的按钮。 ### 回答2: 在Java图形界面中,按钮的边框可以通过设置边框属性来改变其样式。要将按钮的边框改为圆角边框,可以使用Java提供的BorderFactory工具类中的createRoundedBorder方法。 首先,需要导入javax.swing.border包中的BorderFactory类: import javax.swing.border.*; 然后,可以使用以下代码将按钮的边框改为圆角边框: Border roundedBorder = BorderFactory.createRoundedBorder(radius, arcWidth, arcHeight); 其中,radius参数表示边框的弧度大小,arcWidth和arcHeight参数表示圆角的宽度和高度。可以根据具体需求进行调整。 最后,将这个圆角边框应用到按钮上: button.setBorder(roundedBorder); 这样,按钮的边框就会变成圆角边框。 需要注意的是,这个方法只适用于Swing组件库中的按钮,如果要改变其他组件的边框样式,可以使用相应的方法或类,例如JPanel.setBorder方法。 总结一下,要将Java图形界面按钮的边框改为圆角边框,可以使用BorderFactory工具类中的createRoundedBorder方法,通过设置半径、弧度宽度和弧度高度来实现,然后将这个圆角边框应用到按钮上即可。 ### 回答3: 要将Java图形界面按钮边框改为圆角边框,我们可以使用Java Swing中的JButton类来实现。 首先,我们需要创建一个继承自JButton的自定义按钮类。在该类中,我们可以重写paintComponent方法来修改按钮的绘制样式。使用Graphics对象的drawRoundRect方法可以绘制一个圆角矩形,通过设置不同的圆角半径,我们可以调整边框的圆角效果。 下面是一个简单的示例代码: ``` import javax.swing.JButton; import java.awt.Graphics; import java.awt.Insets; public class RoundButton extends JButton { private int radius; // 圆角半径 public RoundButton(String text, int radius) { super(text); this.radius = radius; setContentAreaFilled(false); //使按钮透明 } @Override protected void paintComponent(Graphics g) { g.setColor(getBackground()); g.fillRoundRect(0, 0, getWidth() - 1, getHeight() - 1, radius, radius); super.paintComponent(g); } @Override protected void paintBorder(Graphics g) { g.setColor(getForeground()); g.drawRoundRect(0, 0, getWidth() - 1, getHeight() - 1, radius, radius); } @Override public Insets getInsets() { int value = radius / 2; return new Insets(value, value, value, value); } } ``` 在使用该自定义按钮时,我们可以指定圆角半径,例如: ``` RoundButton btn = new RoundButton("按钮", 10); ``` 然后将该按钮添加到容器中显示即可。 这样我们就成功将Java图形界面按钮的边框改为了圆角边框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值