2012-11-17 31 views
2

我創建了一個JToggleButton,當它被選中時,圖像顯示。除了圖像沒有居中在按鈕上之外,它都可以完美運行。圖像的左上角位於按鈕的中心點,然後圖像向下並向着按鈕的右下角。居中JToggleButton ImageIcon

JToggleButton LayoutButton = new JToggleButton(); 
LayoutButton.setIcon(new ImageIcon()); 
LayoutButton.setSelectedIcon(new ImageIcon("Image.png")); 

任何想法我如何居中形象?

感謝

回答

3

問題是,您的初始圖像與所選圖像的尺寸不匹配,因此,在這種情況下,所選圖像將出現在不同的位置。

您可以爲您最初的「未選擇」圖像佔位符:

public class PlaceHolderIcon implements Icon { 

    private final int width; 
    private final int height; 

    public PlaceHolderIcon(int width, int height) { 
     this.width = width; 
     this.height = height; 
    } 

    public int getIconHeight() { 
     return height; 
    } 

    public int getIconWidth() { 
     return width; 
    } 

    public void paintIcon(Component c, Graphics g, int x, int y) { 
    } 
} 

,並取代你的第一個零維圖像:

ImageIcon selectedIcon = new ImageIcon("Image.png"); 
Image image = selectedIcon.getImage(); 
PlaceHolderIcon placeHolderIcon = new PlaceHolderIcon(image.getWidth(this), image.getHeight(this)); 
JToggleButton layoutButton = new JToggleButton(); 
layoutButton.setIcon(placeHolderIcon); 
layoutButton.setFocusPainted(false); 
layoutButton.setSelectedIcon(selectedIcon); 
+0

謝謝。我剛剛發現了這個!感謝您的解釋修復 –

+0

沒問題... :) – Reimeus

+0

幹得好 - 當之無愧的1 +票! –

1

您應該使用JToggleButton中的setHorizontalAlignment(...)setVerticalAlignment(...)方法(的AbstractButton實際上)。以中間所有參數中的SwingConstants.CENTER作爲參數。

雖然請注意horizo​​ntalAlignment和verticalAlignment屬性的默認值已經是SwingConstants.CENTER。因此,如果這沒有幫助,請考慮發佈一個小型可編譯和可運行的程序,該程序使用網絡中的圖像隨時可用,向我們展示您的問題,sscce以及張貼您當前按鈕的圖像。

+0

感謝您SSCCE的建議。我沒有沒有選擇的圖像,所以當它添加圖像選擇它沒有居中。如果我添加一個圖像沒有選擇然後它的作品。必須與圖像尺寸從未選中變爲選中有關。 –