JCheckBox 可以有不同的状态图标,包括默认图标,选定的图标,禁用的图标,按下的图标或过渡图标等。请参见下面的代码并尝试一下。
package org.nhooo.example.swing; import javax.swing.*; import java.awt.*; public class JCheckBoxCustomIcon extends JFrame { public JCheckBoxCustomIcon() throws HeadlessException { initialize(); } private void initialize() { setSize(300, 300); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setLayout(new FlowLayout(FlowLayout.LEFT)); // 创建带有文本标签的复选框 JCheckBox checkBox = new JCheckBox("Check me!"); checkBox.setSelected(true); // 设置复选框的默认图标 checkBox.setIcon(new ImageIcon("icon.png")); // 选择复选框状态时设置选择的图标 checkBox.setSelectedIcon(new ImageIcon("selectedIcon.png")); // 将复选框设置为禁用图标 checkBox.setDisabledIcon(new ImageIcon("disabledIcon.png")); // 将复选框设置为禁用选定的图标 checkBox.setDisabledSelectedIcon(new ImageIcon("disabledSelectedIcon.png")); // 按下复选框时设置复选框图标 checkBox.setPressedIcon(new ImageIcon("pressedIcon.png")); // 鼠标悬停在复选框上方时设置图标 checkBox.setRolloverIcon(new ImageIcon("rolloverIcon.png")); // 鼠标悬停在所选复选框上时设置图标 checkBox.setRolloverSelectedIcon(new ImageIcon("rolloverSelectedIcon.png")); getContentPane().add(checkBox); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new JCheckBoxCustomIcon().setVisible(true); } }); } }