2015-12-20 88 views
0

基本上,我試圖製作一個按鈕,使文本對齊左邊(所以我使用的是setHorizontalAlignment(SwingConstants.LEFT))和該按鈕的右邊框上的圖像遠離文字如何創建一個JButton,左邊的按鈕上有文字,右邊的按鈕上有它的圖標

我已經嘗試過setHorizontalTextAlignment(SwingConstants.LEFT),但這只是使文字相對於圖標的左側,這不正是我想要的,因爲我需要

此外,我不能做任何固定的間距,因爲它是一系列具有不同文本大小的按鈕。

+1

分享您的代碼。 – Perdomoff

回答

5

我不能做任何固定的間距,因爲它是一系列不同尺寸的文本按鈕。

可以動態改變的間距與類似的代碼:

JButton button = new JButton("Text on left:") 
{ 
    @Override 
    public void doLayout() 
    { 
     super.doLayout(); 

     int preferredWidth = getPreferredSize().width; 
     int actualWidth = getSize().width; 

     if (actualWidth != preferredWidth) 
     { 
      int gap = getIconTextGap() + actualWidth - preferredWidth; 
      gap = Math.max(gap, UIManager.getInt("Button.iconTextGap")); 
      setIconTextGap(gap); 
     } 
    } 
}; 
button.setIcon(new ImageIcon("copy16.gif")); 
button.setHorizontalTextPosition(SwingConstants.LEADING); 
+0

很好的使用'getIconTextGap()'。對於那些想知道的,它會返回文本和該按鈕中顯示的圖標之間的空間量 – user1803551

0

您可以將佈局管理器添加到您的按鈕。

JButton btn = new JButton(); 
btn.add(new JLabel(text)); 
btn.add(new JLabel(img)); 
btn.setLayout(/*best layout choice here*/); 
btn.setPreferredSize(new Dimension(x,y)); 
btn.setMaximumSize(new Dimension(maxX, minY)); 
btn.setMinimumSize(new Dimension(minX, minY)); //this one is most important when it comes to layoutmanagers 

對不起,我不能提供很多幫助,當選擇一個好的佈局 - 但這最終會讓你得到你想要的。也許別人可以評論哪一個使用。

+1

我打算提出這個建議,但是「焦點指示器」並沒有被繪製在你添加到按鈕上的組件上。 – camickr

相關問題