java seticontextgap_java – 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();

}

}

}

有没有人知道如何在左端使用图标并在图标和文本之间留出一些空格(或文本右对齐)?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值