Java 增加图标和按钮之间的差距

Java 增加图标和按钮之间的差距,java,swing,jbutton,Java,Swing,Jbutton,我正在用java做一个程序,你必须用一个按钮选择一个类别 我试图在JButton中放置一个图标和文本,但我不能完全正确对齐。我想在按钮左侧和图标之间留出更大的空间 我已经读到你可以创建一个不可见的线边框来解决这个问题,但是我的JButton已经有了一个边框 choose_Animals = new JButton ("ANIMALS"); choose_Animals.setIcon(categoriesIcon[0]); choose_Animals.setHorizontal

我正在用java做一个程序,你必须用一个按钮选择一个类别

我试图在JButton中放置一个图标和文本,但我不能完全正确对齐。我想在按钮左侧和图标之间留出更大的空间

我已经读到你可以创建一个不可见的线边框来解决这个问题,但是我的JButton已经有了一个边框

choose_Animals = new JButton ("ANIMALS");
    choose_Animals.setIcon(categoriesIcon[0]);
    choose_Animals.setHorizontalAlignment(SwingConstants.LEFT);
    choose_Animals.setIconTextGap(20);
    choose_Animals.setOpaque(false);
    choose_Animals.setContentAreaFilled(false);
    choose_Animals.setForeground(Color.BLACK);
    choose_Animals.setBorder(border);
    choose_Animals.setFocusable(false);
    choose_Animals.setFont(p);
    choose_Animals.setBounds(90, 220,470, 85);
    choose_Animals.addActionListener(this);
    this.add(choose_Animals);
你知道我要求的是不是可以用空布局

定位按钮的文本/图标与布局管理器无关。这些是组件本身的属性

是的,您应该使用布局管理器,而不是空布局。现在是学习使用布局管理器的时候了,而不是将来的某个时候

我读过,你可以创建一个不可见的线边界来解决这个问题

您可以使用
EmptyBorder
为4个插入位置之一提供附加空间

但是我的按钮已经有了边界

choose_Animals = new JButton ("ANIMALS");
    choose_Animals.setIcon(categoriesIcon[0]);
    choose_Animals.setHorizontalAlignment(SwingConstants.LEFT);
    choose_Animals.setIconTextGap(20);
    choose_Animals.setOpaque(false);
    choose_Animals.setContentAreaFilled(false);
    choose_Animals.setForeground(Color.BLACK);
    choose_Animals.setBorder(border);
    choose_Animals.setFocusable(false);
    choose_Animals.setFont(p);
    choose_Animals.setBounds(90, 220,470, 85);
    choose_Animals.addActionListener(this);
    this.add(choose_Animals);
您可以使用
CompoundBorder
将当前边框与
EmptyBorder


有关更多信息和示例,请阅读Swing教程中的部分。

不要这样做:
选择动物。立根(90220470,85)。不要使用设置边界或空布局,因为它们是新手代码的标志,因为这意味着您还不了解这将给您带来的痛苦。学习使用布局管理器,然后再使用布局管理器。正如你所说,我是一个新手,还没有学会使用布局管理器。使用bounds会使你的gui僵化,除了你自己的系统之外,其他任何系统都无法使用,并且很难进行更新或增强。如果你移动东西,那么你必须处理任何移动的副作用。研究上面的链接并使用布局。你不会后悔这样做的。还记得嵌套JPanel,每个都使用自己的布局。感谢您提供关于布局的信息,我仍在自己学习,这需要一些时间。你知道我要求的是不是可以用空布局?如果没有,你建议我从哪种布局开始?非常感谢,复合边界解决了我的问题。你知道有什么地方我可以一步一步地学习使用布局吗?@LuisdelaCal The@LuisdelaCal,
你知道有什么地方我可以学习使用布局吗。。。我给了您一个链接,指向
Swing教程中的一个部分(关于如何使用边框),希望您可以查看目录中的其他基本Swing信息。利用提供给您的资源。