作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为大城市的公共(public)交通设计一个优化系统。所以我有一张 map ,上面有一些点,但不关心它)
我所需要的只是:我自己的 JButton,它看起来像一个填充颜色的圆圈和它附近的一个小文本标签。我在重写 PaintComponent() 方法时遇到了一些问题。圆形按钮已正确绘制,但文本未正确绘制。
但是,当我手动调整窗口大小时,文本会出现一秒钟,然后再次重新绘制并消失。希望你们理解我的需求,感谢帮助;)
import java.awt.*;
import javax.swing.*;
public class JRoundButton extends JButton {
String label;
Color color;
int x,y;
public JRoundButton(Color color,int x,int y,String str)
{
label=str;
this.x=x;
this.y=y;
this.color=color;
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Dimension size = getPreferredSize();
setPreferredSize(size);
this.setBounds(0, 0, 10, 10);
setContentAreaFilled(false);
g.setFont(new Font("Arial",Font.BOLD,14));
g.drawChars(label.toCharArray(), 0, label.length(), 12,12);
g.fillOval(0,0,8,8);
}
public void paintBorder(Graphics g)
{
g.setColor(Color.white);
g.drawOval(0,0, 9, 9);
}
public static void main(String[] args)
{
JButton button = new JRoundButton(Color.GRAY,150,150,"Times Square");
JFrame frame = new JFrame();
frame.getContentPane().setBackground(Color.black);
frame.setSize(300, 300);
frame.setVisible(true);
frame.add(button);
}
}
最佳答案
似乎对“setBounds( 0, 0, 10, 10 )”的调用设置的组件占用空间太小,无法容纳文本字符串。将边界扩展到 100 像素宽并将磅值减小到 6 看起来效果不错。
关于java - 绘制自定义 JButton 和文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065535/
我是一名优秀的程序员,十分优秀!