要正确回答这个问题,很可能需要
SSCCE.无论如何,我相信你会想要在你的JButton实例上调用
setContentAreaFilled(false).这应该有效地删除“方块”.
然而,重要的是要注意,调用该函数的确切行为在逐个组件和L& F-by-L& F的基础上变化.
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public final class JButtonDemo {
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI(){
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JIconButton());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static final class JIconButton extends JButton{
private static final long serialVersionUID = 7274140930080397481L;
public JIconButton(){
super(UIManager.getIcon("OptionPane.informationIcon"));
setContentAreaFilled(false);
setFocusPainted(false);
setBorder(BorderFactory.createEmptyBorder());
}
}
}