基本上,我尝试制作一个文本左侧对齐的按钮(所以我使用setHorizontalAlignment(SwingConstants.LEFT))
和按钮右边框上的图像,远离文字。
我已经尝试了setHorizontalTextAlignment(SwingConstants.LEFT)
,但这只是让文字与图标的左侧相关,这不是我想要的,因为我需要将图标与其隔离。
另外,我不能制作任何固定的间距,因为它是一系列具有不同尺寸的不同文本的按钮。
答案 0 :(得分:0)
这是camickr的答案的衍生物,允许在GUI构建器中进行编辑以及将其置于动态布局中。我还删除了UIManager.getInt("Button.iconTextGap")
,以便在必要时缩小到0。
我把它称为'对齐'按钮,类似于对齐的文本对齐方式(通过增加空格字符的宽度,将段落向左和向右拉伸)。
public class JustifiedButton extends JButton {
@Override
public void doLayout() {
super.doLayout();
setIconTextGap(0);
if (getHorizontalTextPosition() != CENTER) {
int newGap = getSize().width - getMinimumSize().width;
if (newGap > 0)
setIconTextGap(newGap);
}
}
@Override
public Dimension getMinimumSize() {
Dimension minimumSize = super.getMinimumSize();
if (getHorizontalTextPosition() != CENTER)
minimumSize.width -= getIconTextGap();
return minimumSize;
}
@Override
public Dimension getPreferredSize() {
Dimension preferredSize = super.getPreferredSize();
if (getHorizontalTextPosition() != CENTER)
preferredSize.width -= getIconTextGap();
return preferredSize;
}
}
这不完全适合生产,需要进行一些现场测试。如果我发现了什么,我会编辑代码。
[edit]现在适用于垂直文本对齐。也简化了一点
[edit2]同时操纵getPreferredSize
与滚动窗格一起玩得很好(否则它会不断增长,再也不会缩小)