我正在尝试将计算器编程为尽可能接近 Windows 7/8 模型,我正在尝试提供{{1}自定义外观,但它没有按计划进行。我的按钮被称为Jbutton
,它扩展了CalculatorButton
。我目前正在使用JButton
绘制边框并使其比标准Graphics
边框更圆,但它似乎只适用于一个JButton
实例,而不是随后创建的实例。
另请原谅不良格式,这是我的第一篇文章。
下面是calculatorbutton类
CalculatorButton
下面是计算器类
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.border.Border;
public class CalculatorButton extends JButton {
CalculatorButton() {
super();
this.setFont(new Font("Segoe UI",Font.PLAIN,12));
this.setOpaque(false);
this.setFocusPainted(false);
}
CalculatorButton(String text) {
super(text);
this.setFont(new Font("Segoe UI",Font.PLAIN,12));
this.setOpaque(false);
this.setFocusPainted(false);
this.setContentAreaFilled(false);
}
protected void paintBorder(Graphics g) {
g.setColor(new Color(144,158,171));
g.drawLine(getX()+1,getY(),getX()+getWidth()-2,getY());
g.drawLine(getX()+1,getY()+getHeight()-1,getX()+getWidth()-2,getY()+getHeight()-1);
g.drawLine(getX(),getY()+1,getX(),getY()+getHeight()-2);
g.drawLine(getX()+getWidth()-1,getY()+1,getX()+getWidth()-1,getY()+getHeight()-2);
}
}
答案 0 :(得分:2)
首先,所有绘画都是在当地环境中完成的。也就是说,Graphics
上下文被转换为组件位置(x / y)。
这意味着左上角实际为0x0
,右下角为width - 1 x height - 1
其次,您应考虑制作符合您需求的paintBorder
,而不是覆盖Border
。边框不仅仅是绘画,它们还提供有关所需额外空间的重要信息
答案 1 :(得分:2)