我正在Mac上使用Eclipse设计GUI,我想让JButton
只显示我设置的Icon。它在Mac OS上看起来很好,但是当我将它导出到jar文件并在Windows操作系统中输入时,JButton
看起来像这样:
边框全部为EmptyBorder
。
我做错了什么?我怎样才能让后面的广场消失?
答案 0 :(得分:10)
要正确回答此问题,最有可能需要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());
}
}
}
答案 1 :(得分:2)
1)不能重现那个,如果没有看到你为此写的代码就太难说了,
2)因为你触及了XxxButtonUI,这实际上是Native OS相关的问题,看上去用的是那个
3)如果覆盖MetalButtonUI会发生什么?
4)有transulcent背景,或有一些颜色,或......