【问题标题】:Why is my JToggleButton not accepting my setDisabledIcon()?为什么我的 JToggleButton 不接受我的 setDisabledIcon()?
【发布时间】:2014-01-29 23:10:06
【问题描述】:

我正在尝试为JToggleButton 设置默认和切换状态的 2 个图标。尽管我为这两种状态都设置了一个图标,但它为什么不改变它的显示?

package gui;

import java.awt.Image;

import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JToggleButton;

public class RepeatButton extends JToggleButton {


    private ImageIcon repeatIcon;
    private ImageIcon repeatIconUnchecked;


    public RepeatButton() {
        repeatIcon = new ImageIcon("media_repeat.png");
        repeatIcon.setImage(repeatIcon.getImage().getScaledInstance(repeatIcon.getIconWidth()/2, repeatIcon.getIconHeight()/2,Image.SCALE_AREA_AVERAGING));
        repeatIconUnchecked = new ImageIcon("media_repeat_uncheckedalt.png");
        repeatIconUnchecked.setImage(repeatIconUnchecked.getImage().getScaledInstance(repeatIconUnchecked.getIconWidth()/2, repeatIconUnchecked.getIconHeight()/2,Image.SCALE_AREA_AVERAGING));
        this.setIcon(repeatIcon);
        this.setDisabledIcon(repeatIconUnchecked);
        this.setBorder(null);
    }
}

【问题讨论】:

  • 部署时,这些图标可能会变成embedded-resource。在这种情况下,它们必须由URL 而不是File 访问。请参阅标签的info page,以了解形成ImageIconURL 的方法。

标签: java swing icons jtogglebutton


【解决方案1】:

disabled icon 是当您的 JToggleButton 通过以下操作disabled 时将使用的图标:

btn.setEnabled(false);

并且与 isSelected 状态无关。

您可以通过使用选定状态的侦听器更改图标来手动执行此操作。或者你可以使用setSelectedIcon() 方法。

【讨论】:

  • @nakih:不要把缺乏经验误认为是愚蠢。通过不断的努力,你会在这方面做得更好,但最重要的是——请查看 API,因为这个有用的工具很容易获得答案。
  • 我检查过了。我通过切换按钮禁用某些东西的事实被卡在了头上。我把 isSelected() 误认为是 isDisabled()。
猜你喜欢
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 2016-07-09
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多