首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JToggleButton不涂装

JToggleButton不涂装
EN

Stack Overflow用户
提问于 2010-03-09 23:52:23
回答 2查看 779关注 0票数 0

好的,我做了一个JToggleButton:

代码语言:javascript
复制
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) {}

但我对它有问题,而不是画画。正如你所看到的,我设置了所选的true,但是它没有绘制按钮有时是,其他时候它工作得很好!现在它被设置为真,因为我在它后面加了一个。

代码语言:javascript
复制
System.out.println(button.isSelected() + " " +i);
EN

回答 2

Stack Overflow用户

发布于 2010-03-10 01:23:39

我可以在paintComponent()中重写JToggleButton,或者只使用setIcon()

增编:请确保您正在EDT上运行,并正确覆盖paintComponent()。下面的简短、完整、可编译的示例(斯考斯)对我来说是可靠的。正如@camickr所建议的,创建一个斯考斯可能有助于隔离您遇到的问题。

代码语言:javascript
复制
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();
            }
        });
    }
}
票数 4
EN

Stack Overflow用户

发布于 2011-01-01 20:19:02

我想我在试图解决我的问题时偶然发现了你的问题。由于您使用setSelected()来更改按钮的状态,所以一定要使用setSelectedIcon()来更改选中时显示的图标。可以使用预期的结果将其设置为与setIcon()相同的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2413517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档