「java圆角按钮」圆角按钮和方形按钮

博主:adminadmin 2022-11-28 07:49:08 45

本篇文章给大家谈谈java圆角按钮,以及圆角按钮和方形按钮对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java怎么在按钮上加图片,或者把图片做成按钮(按钮是圆的

JButton有构造 方法

JButton(Icon icon)

创建一个带图标的按钮。

也有方法 public void setIcon(Icon defaultIcon)

public void setPressedIcon(Icon pressedIcon)

设置按钮的按下图标。

public void setSelectedIcon(Icon selectedIcon)

设置按钮的选择图标。

public void setRolloverIcon(Icon rolloverIcon)

设置按钮的翻转图标。

public void setRolloverSelectedIcon(Icon rolloverSelectedIcon)

设置按钮的翻转选择图标。

public void setDisabledIcon(Icon disabledIcon)

设置按钮的禁用图标。

public void setDisabledSelectedIcon(Icon disabledSelectedIcon)

设置按钮的禁用选择图标。

Android如何设置圆角按钮

可以通过shape设置圆角

!-- 设置圆角 --

corners android:radius="2dp"

/corners

扩展:

?xml version="1.0" encoding="utf-8"?

!-- shape如果不声明形状默认是正方形 --

shape xmlns:android=""

!-- 设置填充色 --

solid android:color="#4285f4"

/solid

!-- 设置边框的颜色和宽度 --

stroke

android:width="1dp"

android:color="#4285f4"

/stroke

/shape

通过selector设置点击效果

button_bg.xml

?xml version="1.0" encoding="utf-8"?

!-- 这个是用于控制按钮组背景的文件 --

selector xmlns:android=""

!-- **点击时效果**********背景引用的资源*************************是否获得焦点*********************是否按下******* --

item android:drawable="@drawable/button_p" android:state_focused="true" android:state_pressed="false"/

item android:drawable="@drawable/button_p" android:state_focused="true" android:state_pressed="true"/

item android:drawable="@drawable/button_p" android:state_focused="false" android:state_pressed="true"/

!-- **************没有任何操作时显示的背景************** --

item android:drawable="@drawable/button_n"/item

/selector

在xml文件中设置button的background属性。

android:background="@drawable/button_bg"

java椭圆按钮怎么设置,最好举一个简单的例子,只要有窗体中一个椭圆按钮就可以,最好有注释,谢谢,好的

椭圆按钮要重新绘制按钮才行,对你来说可能会比较难。

import javax.swing.ImageIcon;

import javax.swing.JButton;

public class EllipseButton extends JButton {

static final long serialVersionUID=80;

public EllipseButton(String text){

super(text);

// 创建自己的UI

this.setUI(EllipseButtonUI.createUI(this));

// 取消按钮的边框

this.setBorder(null);

// 不用内容窗格的背景

this.setContentAreaFilled(false);

// 设定边缘

this.setMargin(new Insets(8, 14, 8, 14));

}

public EllipseButton(ImageIcon image){

super(image);

// 创建自己的UI

this.setUI(EllipseButtonUI.createUI(this));

// 取消按钮的边框

this.setBorder(null);

// 不用内容窗格的背景

this.setContentAreaFilled(false);

// 设定边缘

this.setMargin(new Insets(-1,-1,-1,-1));

}

}

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.RenderingHints;

import java.awt.Stroke;

import java.awt.geom.Arc2D;

import java.awt.geom.Ellipse2D;

import javax.swing.AbstractButton;

import javax.swing.ButtonModel;

import javax.swing.JComponent;

import javax.swing.UIManager;

import javax.swing.plaf.ComponentUI;

import javax.swing.plaf.basic.BasicButtonUI;

public class EllipseButtonUI extends BasicButtonUI {

protected static EllipseButtonUI singleton = new EllipseButtonUI();

// 创建Stroke用于画按钮

protected static Stroke thickStroke = new BasicStroke(2.0f);

public static ComponentUI createUI(JComponent c) {

return singleton;

}

public void paint(Graphics g, JComponent c) {

// 获得Graphics2D的对象,并开启抗锯齿处理

Graphics2D g2 = (Graphics2D) g;

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

// 得到按钮的大小

AbstractButton b = (AbstractButton) c;

Rectangle viewRect = new Rectangle();

viewRect.x = 0;

viewRect.y = 0;

viewRect.width = b.getWidth() - 1;

viewRect.height = b.getHeight() - 1;

// 缩小矩形以显示抗锯齿效果

viewRect.grow(-2, -2);

// 在按钮矩形内创建椭圆

Ellipse2D ellipse = new Ellipse2D.Float();

ellipse.setFrame(viewRect.getX(), viewRect.getY(), viewRect.getWidth(),

viewRect.getHeight());

// 判断按钮有无被按下

ButtonModel model = b.getModel();

boolean pressed = (model.isArmed() model.isPressed())

|| model.isSelected();

// 根据按钮按下与否设置画笔颜色

if (pressed) {

Color background = UIManager.getColor("Button.select");

g2.setPaint(background == null ? Color.gray : background);

} else

g2.setPaint(UIManager.getColor("control"));

// 填充椭圆按钮

g2.fill(ellipse);

// 根据椭圆按钮的大小来设定边框大小.

Arc2D arc = new Arc2D.Float();

arc.setFrame(viewRect.getX(), viewRect.getY(), viewRect.getWidth(),

viewRect.getHeight());

arc.setArcType(Arc2D.OPEN);

// 设定边框指定弧度的区域

arc.setAngles(viewRect.getWidth(), 0, 0, viewRect.getHeight());

g2.setStroke(thickStroke);

// 根据按钮按下与否设定画笔的颜色

g2.setPaint(pressed ? UIManager.getColor("controlDkShadow") : UIManager

.getColor("controlHighlight"));

g2.draw(arc);

arc.setAngles(0, viewRect.getHeight(), viewRect.getWidth(), 0);

g2.setPaint(pressed ? UIManager.getColor("controlHighlight")

: UIManager.getColor("controlShadow"));

g2.draw(arc);

super.paint(g, c);

// 将图形上下文恢复原来的抗锯齿属性的设置

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_OFF);

}

public Dimension getPreferredSize(JComponent c) {

AbstractButton b = (AbstractButton) c;

Dimension dim = super.getPreferredSize(c);

// 调整高度和宽度,为了更好的显示效果

dim.height += (b.getMargin().top + b.getMargin().bottom);

dim.width += (b.getMargin().left + b.getMargin().right);

return dim;

}

}

public class Test extends JFrame {

public Test() {

EllipseButton b = new EllipseButton("按钮");

add(b);

setSize(150, 100);

}

/**

* @param args

*/

public static void main(String[] args) {

new Test().setVisible(true);

}

}

==================================

老大,我都调试过了才发出来的。无语了......

你看代码了没?

里面是3个类?你要分别创建3个类,把代码分别放到各自的类里,哎~~~~~~

java的jwindow能够设置成圆角吗

可以的,看代码,需要jre1.7

JWindow win = new JWindow();

win.setShape(new RoundRectangle2D.Double(10, 10, 100, 100, 50, 50));

win.setSize(300, 200);

win.setVisible(true);

问一个问题,JAVA上可不可以做出来一个圆形的按钮?

可以自定义的

贴代码给你看下

import java.awt.Color;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Graphics;

import java.awt.Shape;

import java.awt.SystemColor;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.geom.Ellipse2D;

import javax.swing.JButton;

import javax.swing.JFrame;

public class CircleButton extends JButton {

Shape shape;

Color bgColor = SystemColor.control;

public CircleButton() {

    this("未命名", null);

}

public CircleButton(String label) {

    this(label, null);

}

public CircleButton(String label, Color bgColor) {

    super(label); // 调用父类构造方法

    if (bgColor != null) {

      this.bgColor = bgColor;

    }

    Dimension size = this.getPreferredSize();

    size.width = size.height = Math.max(size.width, size.height);

    this.setPreferredSize(size); // 设置宽高等距

    this.setContentAreaFilled(false); // 不绘制内容区域

    this.setBorderPainted(false); // 不绘制边框

    this.setFocusPainted(false); // 不绘制焦点状态

}

protected void paintComponent(Graphics g) {

    // 如果鼠标按下,isArmed()方法返回true

    if (this.getModel().isArmed()) {

      g.setColor(java.awt.SystemColor.controlHighlight);

    } else {

      g.setColor(java.awt.SystemColor.controlShadow);

      g.setColor(this.bgColor); // 设置背景颜色

    }

    g.fillOval(0, 0, this.getSize().width - 1, this.getSize().height - 1); // 绘制圆形背景区域

    g.setColor(java.awt.SystemColor.controlShadow); // 设置边框颜色

    g.drawOval(0, 0, this.getSize().width - 1, this.getSize().height - 1); // 绘制边框线

    super.paintComponent(g);

}

public boolean contains(int x, int y) {

    if ((shape == null) || (!shape.getBounds().equals(this.getBounds()))) {

      this.shape = new Ellipse2D.Float(0, 0, this.getWidth(), this

          .getHeight());

    }

    return shape.contains(x, y);

}

}

class CircleButtonTest {

public static void main(String[] args) {

    JFrame jf = new JFrame("自定义按钮");

    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    jf.setSize(350, 280);

    jf.setLocationRelativeTo(null);

    jf.setLayout(new FlowLayout());

    Color arrColor[] = new Color[] { Color.blue, Color.black, Color.red,

        Color.yellow, Color.green };

    for (int i = 0; i  5; i++) {

      CircleButton cb = new CircleButton("圆形按钮" + (i+1),arrColor[i]);

      jf.getContentPane().add(cb);

      cb.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

          System.out.println("按钮");

        }

      });

    }

    jf.setVisible(true);

}

}

关于java圆角按钮和圆角按钮和方形按钮的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。