gpt4 book ai didi

java - JToggleButton 不绘画

转载 作者:行者123 更新时间:2023-12-01 19:24:07 24 4
gpt4 key购买 nike

好的,所以我做了一个 JToggleButton:

JToggleButton button = new JToggleButton(new ImageIcon(features[i].getImage())) {

private static final long serialVersionUID = 1L;

@Override
public void paint(Graphics g) {
super.paint(g);
if (isSelected()) {
g.setColor(Color.RED);
g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);
}
}
};
try {
if (bodyButton.isSelected()) {
if (equals(features[i].getImage(), avatar.getBody().getImage())) {
button.setSelected(true);
}
} else if (eyesButton.isSelected()) {
if (equals(features[i].getImage(), avatar.getEyes().getImage())) {
button.setSelected(true);
}
} else if (glassesButton.isSelected()) {
if (equals(features[i].getImage(), avatar.getGlasses().getImage())) {
button.setSelected(true);
}
} else if (hairButton.isSelected()) {
if (equals(features[i].getImage(), avatar.getHair().getImage())) {
button.setSelected(true);
}
} else if (pantsButton.isSelected()) {
if (equals(features[i].getImage(), avatar.getPants().getImage())) {
button.setSelected(true);
}
} else if (shirtButton.isSelected()) {
if (equals(features[i].getImage(), avatar.getShirt().getImage())) {
button.setSelected(true);
}
} else if (shoesButton.isSelected()) {
if (equals(features[i].getImage(), avatar.getShoes().getImage())) {
button.setSelected(true);
}
}
} catch (Exception e) {}

但是我在不绘画时遇到了问题。如您所见,我在启动后立即将 selected true 设置为 true,但它有时不会绘制按钮,其他时候效果很好!我知道它被设置为 true,因为我在它后面添加了一个。

System.out.println(button.isSelected() + " " +i);

最佳答案

我可能会重写 JToggleButton 中的 paintComponent(),或者只使用 setIcon()

附录:确保您在 EDT 上运行并正确重写 paintComponent()。以下简短、完整、可编译的示例 ( sscce ) 对我来说可靠。正如 @camickr 建议的那样,创建一个 sscce可能有助于找出您遇到的问题。

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

public class NewMain extends JPanel {

public NewMain() {
super(true);
JToggleButton button = new JToggleButton(new ImageIcon("test.gif")) {

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);
}
};
this.add(button);
}

private static void create() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(2, 2));
for (int i = 0; i < 4; i++) {
f.add(new NewMain());
}
f.pack();
f.setVisible(true);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
create();
}
});
}
}

关于java - JToggleButton 不绘画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413517/

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