gpt4 book ai didi

java - jcomponents如何绘制?

转载 作者:行者123 更新时间:2023-12-02 08:52:52 25 4
gpt4 key购买 nike

我想知道 jComponent 是如何在屏幕上绘制的,它是在 Graphics 的 PaintComponent() 内部绘制的吗?或者是单独画的。我问这个问题是因为即使从未调用过 repaint(),jbutton 如何在鼠标悬停时改变颜色也很奇怪。

感谢您的宝贵时间。

最佳答案

组件被绘制为 paint方法。 repaint 只是一个有用的方法,它将在不久的将来的某个时刻在 Event Dispatch Thread 上调用 paint .

<小时/>

当鼠标进入 JButton 时,将调用以下方法(对于具有默认 UI 的 JButton):

public void mouseEntered(MouseEvent e) {
AbstractButton b = (AbstractButton) e.getSource();
ButtonModel model = b.getModel();
if (b.isRolloverEnabled() && !SwingUtilities.isLeftMouseButton(e)) {
model.setRollover(true);
}
if (model.isPressed())
model.setArmed(true);
}

ButtonModel.setRollover将触发 ChangeEvent,该事件由 AbstractButton 按以下方式处理:

public void stateChanged(ChangeEvent e) {
Object source = e.getSource();

updateMnemonicProperties();
if (isEnabled() != model.isEnabled()) {
setEnabled(model.isEnabled());
}
fireStateChanged();
repaint();
}

因此,当鼠标进入 JButton 时,会调用 repaint

关于java - jcomponents如何绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12118521/

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