- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望在单击 Jbutton 时更改图标。我将 Button1 设置为打印“On”或“Off”的操作命令。我想让按钮将图标从表示关闭的圆圈图像更改为表示打开的电源按钮图像。我已经尝试了很多方法,但一直无法找到解决方案,所以我想知道是否有一种简单的方法可以做到这一点,或者是否没有一种简单的方法,并且我必须为每个按钮制定更复杂的方法。非常感谢任何建议,因为我陷入了死胡同。可以自由地编辑大块或添加东西,因为我对所有想法持开放态度。代码包含在下面
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;
public class OnandOff{
public static void main(String[] a){
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new ButtonDemo());
f.setSize(600,500);
f.setVisible(true);
}
}
class ButtonDemo extends JPanel implements ActionListener {
JTextField jtf;
public ButtonDemo() {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
makeGUI();
}
});
} catch (Exception exc) {
System.out.println("Can't create because of " + exc);
}
}
private void makeGUI() {
setLayout(new FlowLayout());
//sets up icons
ImageIcon OnIcon = new ImageIcon(" On.jpg");
Icon OffIcon = new ImageIcon("Off.jpg");
ImageIcon BlankIcon = new ImageIcon("Blank.jpg");
//creates jbuttons with Action command
ImageIcon button1 = new ImageIcon("Off.jpg");
JButton jb = new JButton(button1);
jb.setActionCommand("On");
jb.addActionListener(this);
add(jb);
ImageIcon button2 = new ImageIcon("Off.jpg");
jb = new JButton(button2);
add(jb);
ImageIcon button3 = new ImageIcon("Off.jpg");
jb = new JButton(button3);
add(jb);
ImageIcon button4 = new ImageIcon("Off.jpg");
jb = new JButton(button4);
add(jb);
}
@Override
//prints on and off when detecting action comand from a jbutton
public void actionPerformed(ActionEvent ae) {
String action = ae.getActionCommand();
if (action.equals("On")) {
System.out.println("Yes Button pressed!");
ImageIcon button1 = new ImageIcon("On.jpg");
TicTacToe.a = 1;
}
else if (action.equals("Off")) {
System.out.println("No Button pressed!");
}
}
最佳答案
您忘记在任何按钮上调用setIcon(...)
。作为AbstractButton API会告诉你(这是JButton的父类),只需调用其setIcon(Icon icon)
方法并传入新的Icon即可轻松更改任何按钮的图标。将来,首先访问 API,因为您将在那里学到很多东西,包括完全满足您需要的方法。
其他建议:不要给变量起与实际不符的名称。例如,您将 ImageIcon 变量称为“button1”,就好像它是 JButton 一样,这会让其他编码人员和您 future 的自己感到困惑。相反,为什么不将其称为“onIcon”或“offIcon”,一个使代码 self 注释的名称。
您的代码存在一个主要问题,也是您无法使其工作的原因之一 - 您的 JButton 对象被分配给局部变量,这些变量仅在声明它们的方法中可见。如果您希望 JButton 对象能够在类的不同方法中更改图标,则必须在类级别声明它们,而不是在方法或构造函数或更深层。
关于java - 如何在按下 JButton 时更改图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37892941/
我是一名优秀的程序员,十分优秀!