gpt4 book ai didi

java - setIcon 有效,而 setDisabledIcon 无效 - 为什么?

转载 作者:行者123 更新时间:2023-12-02 00:03:54 26 4
gpt4 key购买 nike

我想为 JButton 设置一个禁用时的图标。问题是,这样的代码:

package problemshowcase;

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

public class ProblemShowcase {
JFrame frame1 = null;
JButton btn = null;

public static void main(String[] args) {
ProblemShowcase test = new ProblemShowcase();
test.makeFrame();
}

public void makeFrame()
{
frame1 = new JFrame();
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setSize(500,500);

btn = new JButton();
btn.setDisabledIcon(new ImageIcon(getClass().getResource("/test.png")));
btn.addActionListener(new someListener());

frame1.getContentPane().add(btn);
frame1.setVisible(true);
}

class someListener implements ActionListener{
public void actionPerformed(ActionEvent ev){
JButton foo = (JButton) ev.getSource();

foo.setEnabled(false);
}
}
}

单击后按钮完全变灰,且按钮上没有任何图像。然而,当我将 setDisabledIcon() 更改为 setIcon() 时,它在单击之前和之后都显示正确的图像(尽管它显然是灰色的)。这是怎么回事?

最佳答案

好吧,看来只要“常规”图标没有设置好,JButton(和 JToggleButton)就不会显示DisabledIcon。因此,如果您想在单击按钮之前保持按钮的非图标性(我想,如果您像我一样编写扫雷游戏,那么您想要的),我想到的唯一解决方案是这样做:

package problemshowcase;

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

public class ProblemShowcase {
JFrame frame1 = null;
JButton btn = null;

public static void main(String[] args) {
ProblemShowcase test = new ProblemShowcase();
test.makeFrame();
}

public void makeFrame()
{
frame1 = new JFrame();
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setSize(500,500);

btn = new JButton();
btn.setDisabledIcon(new ImageIcon(getClass().getResource("/test.png")));
btn.addActionListener(new someListener());

frame1.getContentPane().add(btn);
frame1.setVisible(true);
}

class someListener implements ActionListener{
public void actionPerformed(ActionEvent ev){
JButton foo = (JButton) ev.getSource();
btn.setIcon(new ImageIcon(getClass().getResource("/test.png")));

foo.setEnabled(false);
}
}
}

这样,您就可以在将按钮设置为禁用之前设置“常规”图标,从而完全阻止它显示。您还可以在那里放置一些 1x1 像素透明的东西。

不是最优雅的解决方案,但它似乎是唯一有效的解决方案......

关于java - setIcon 有效,而 setDisabledIcon 无效 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282205/

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