gpt4 book ai didi

java - JButton自定义问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:28 25 4
gpt4 key购买 nike

我需要一些有关自定义 JButton 的帮助。

我正在使用以下扩展方法来执行此操作...我需要向按钮添加背景颜色,并且我还需要在按钮的两个位置放置两个不同的文本(左上和中心)

我的代码无法支持这两种情况(颜色和文本位置)。我要么能够找到文本,要么能够获得背景颜色。在当前的代码中,我得到了 BG 颜色,但文本没有出现

protected void paintComponent(Graphics g) {
g.setColor( color);
g.fillRect(0, 0, getSize().width, getSize().height);
super.paintComponent(g);
setPreferredSize(new Dimension(47, 33));

if (isHeader) {
g.setFont(new Font("Arial", Font.PLAIN, 11));
g.drawChars(date.toCharArray(), 0, date.length(), 13, 20);
//setBackground(color);

} else {
g.setFont(new Font("Arial", Font.PLAIN, 9));
g.drawChars(date.toCharArray(), 0, date.length(), 3, 11);

g.setFont(new Font("Arial", Font.PLAIN, 11));
g.drawChars(hours.toCharArray(), 0, hours.length(), 18, 20);

}
super.paintComponent(g);
setContentAreaFilled(false);
g.finalize();
}

最佳答案

乍一看,您似乎正在绘制文本,但您使用与背景相同的颜色来绘制文本,因此您将看不到它。黑色背景上的黑色文字就是黑色。

您需要为文本和背景使用不同的颜色。类似的东西;

protected void paintComponent(Graphics g) {
g.setColor(backgroundColor);
g.fillRect(0, 0, getSize().width, getSize().height);
super.paintComponent(g);
setPreferredSize(new Dimension(47, 33));

g.setColor(textColor); //set the text color before drawing the text
if (isHeader) {
g.setFont(new Font("Arial", Font.PLAIN, 11));
g.drawChars(date.toCharArray(), 0, date.length(), 13, 20);
} else {
g.setFont(new Font("Arial", Font.PLAIN, 9));
g.drawChars(date.toCharArray(), 0, date.length(), 3, 11);

g.setFont(new Font("Arial", Font.PLAIN, 11));
g.drawChars(hours.toCharArray(), 0, hours.length(), 18, 20);
}
super.paintComponent(g);
setContentAreaFilled(false);
g.finalize();
}

这些似乎是您的代码中的其他几个有趣的地方。为什么不使用 setBackground() 以及为什么调用 super.paintComponent() 两次?

编辑:另外,为什么要在绘制方法中设置组件的大小?这似乎是错误的。为什么要在 Graphics 对象上调用 finalize()

关于java - JButton自定义问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6953858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com