gpt4 book ai didi

java - 上下更改 JButton?

转载 作者:行者123 更新时间:2023-11-29 05:42:56 25 4
gpt4 key购买 nike

我覆盖了 JButton 的绘制组件,但现在当我单击时它不会变暗。我搜索了 google 和 stack overflow,但似乎没有答案。那么如何让按钮在按下时颜色变深,点击完成后又恢复正常呢?

这是我的代码:

@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g.create();
RenderingHints qualityHints =
new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2.setRenderingHints(qualityHints);
g2.setPaint(new GradientPaint(
new Point(0, 0),
BUTTON_TOP_GRADIENT,
new Point(0, getHeight()),
BUTTON_BOTTOM_GRADIENT));
g2.fillRoundRect(0, 0, getWidth(), getHeight(), 10, 10);
g2.dispose();


}

最佳答案

底部的这段代码片段对我有用。这是它的工作原理:

我检查按钮的模型以查看按钮是否被单击。当它被点击时,它会以不同的方式描绘自己。

package com.sandbox;

import javax.swing.*;
import java.awt.*;

public class SwingSandbox {

public static void main(String[] args) {

JFrame frame = buildFrame();
frame.add(new MyButton());
}

private static class MyButton extends JButton {


@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);

Color color;

if (getModel().isPressed()) {
color = new Color(0, 0, 0);
} else {
color = new Color(0, 0, 255);
}

Graphics2D g2 = (Graphics2D) g.create();
RenderingHints qualityHints =
new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2.setRenderingHints(qualityHints);
g2.setPaint(new GradientPaint(
new Point(0, 0),
color,
new Point(0, getHeight()),
new Color(255, 255, 0)));
g2.fillRoundRect(0, 0, getWidth(), getHeight(), 10, 10);
g2.dispose();


}
}


private static JFrame buildFrame() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
return frame;
}


}

关于java - 上下更改 JButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864257/

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