我正在Mac上使用Eclipse設計GUI,並且我想讓JButton
僅顯示我設置的圖標。它看起來罰款在Mac OS上,但是當我將它導出到一個jar文件,並在車轍在Windows操作系統中,JButton
看起來是這樣的:即使將邊框設置爲EmptyBorder,JButton的邊框也不會消失
邊框都EmptyBorder
。
我做錯了什麼?我怎樣才能讓背部的廣場消失?
我正在Mac上使用Eclipse設計GUI,並且我想讓JButton
僅顯示我設置的圖標。它看起來罰款在Mac OS上,但是當我將它導出到一個jar文件,並在車轍在Windows操作系統中,JButton
看起來是這樣的:即使將邊框設置爲EmptyBorder,JButton的邊框也不會消失
邊框都EmptyBorder
。
我做錯了什麼?我怎樣才能讓背部的廣場消失?
要正確地回答這個問題,一個SSCCE將最有可能是必需的。無論如何,我相信你會想在你的JButton
實例上調用setContentAreaFilled(false)
。這應該有效地消除「廣場」。
但是,需要注意的是,調用此功能的確切行爲因組件而異,並且基於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工作於'com.apple.laf.AquaLookAndFeel',但武裝和按下的UI提示消失;爲了好玩,嘗試添加'this.setPressedIcon(UIManager.getIcon(「OptionPane.warningIcon」))''。 – trashgod
@mre:setContentAreaFilled(false)有效!但我沒有寫我自己的JButton類,我只是喜歡okButton.setContentAreaFilled(false);等等。有用! – xiaofan2406
1)無法重現,太硬沒有看到你爲寫代碼的說,
2),因爲你感動XxxButtonUI,這真是本機OS rellated問題,其外觀和風格是否有用於此
3)如果你重寫MetalButtonUI會發生什麼?
4)有transulcent背景,或者與某些顏色,或者......
聽起來像一個L&F的問題。可能這兩個操作系統對您使用的文件格式中的透明像素有不同的解釋(儘管這對我來說似乎不太可能)。你使用什麼文件格式?另外,如果您可以製作[scce](http://sscce.org/),則可能會有所幫助。 –
@Xiaofan Wu只是確保我們JButton的狀態來自Windows或MAC操作系統 – mKorbel