JToggleButton 自定义图标
废话不多说,直接上代码
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.WindowConstants;
import java.util.Objects;
public class JToggleButtonDemo {
public static void main(String[] args) {
JFrame jFrame = new JFrame("Test");
jFrame.setSize(250, 250);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// 创建开关按钮
JToggleButton toggleBtn = new JToggleButton();
// 取消按钮的边框
toggleBtn.setBorderPainted(false);
toggleBtn.setFocusPainted(false);
//toggleBtn.setBorder(null); 一句话顶上面两句话
// 关键, 设置该属性后图标才会填充整个按钮。
toggleBtn.setContentAreaFilled(false);
// 设置 选中(开) 的图片
toggleBtn.setSelectedIcon(new ImageIcon(Objects.requireNonNull(JToggleButtonDemo.class.getResource("/switchOff.png"))));
// 设置鼠标点击时的图片,效果较差
toggleBtn.setPressedIcon(new ImageIcon(Objects.requireNonNull(JToggleButtonDemo.class.getResource("/switchPressed.png"))));
//设置 未选中(关) 时显示的
toggleBtn.setIcon(new ImageIcon(Objects.requireNonNull(JToggleButtonDemo.class.getResource("/switchOn.png"))));
// 添加 toggleBtn 的监听
toggleBtn.addActionListener(e -> {
// 获取事件源(即开关按钮本身)
JToggleButton a = (JToggleButton) e.getSource();
System.out.println("是否选中: " + a.isSelected());
});
panel.add(toggleBtn);
jFrame.setContentPane(panel);
jFrame.setVisible(true);
}
}
效果图如下
图标资源移步这里