我試圖創建一個帶有圖標和一些文本的JButton
。我的問題是,我希望圖標左對齊,文本右對齊(不需要右對齊,但我不希望文本粘在圖標上)。JButton:圖標左對齊,文本右對齊
無法自己做到這一點,我嘗試了一個稍微不同的解決方案。我使用iconTextGap
在圖標和文本之間創建了一些空間,原則上工作得很好,但是當我創建多個按鈕時,它們的寬度都是最寬的,圖標不再位於左側(除了最長文本的按鈕)。
我包括一個代碼,以證明:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.io.File;
import java.net.MalformedURLException;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
public class Main{
private JFrame frame;
private JPanel buttonPanel;
private GridBagConstraints constraints;
public Main() throws MalformedURLException{
frame = new JFrame();
buttonPanel = new JPanel();
frame.add(buttonPanel);
buttonPanel.setLayout(new GridBagLayout());
constraints = new GridBagConstraints();
constraints.insets = new Insets(5, 5, 3, 5);
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.gridx = 0;
constraints.gridy = 0;
String[] text = { "some Text", "this text is longer" };
for (int i = 0; i < text.length; i++) {
JButton button= new JButton(text[i], new ImageIcon(new File("icon.png").toURI().toURL()));
button.setAlignmentX(SwingConstants.WEST);
button.setIconTextGap(30);
button.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 10));
buttonPanel.add(button, constraints);
constraints.gridy++;
}
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args){
try {
new Main();
} catch (Exception e) {
e.printStackTrace();
}
}
}
有誰知道的方法有在左端的圖標,並有文字右對齊圖標和文本之間的一些空間(或)?
它沒有用'setHorizontalAlignment(SwingConstants.LEFT)工作' – 1r0n1k