Java 为什么设置新边框后我的JTextField发生了更改

Java 为什么设置新边框后我的JTextField发生了更改,java,swing,border,jtextfield,Java,Swing,Border,Jtextfield,我想知道为什么我的元素JTextField在设置新边框后高度发生变化: packagesAddField.setBorder(BorderFactory.createLineBorder(Color.RED)); 在这段代码之后,我的JTextField改变了高度(从上到下大约1px,从下到下大约1px)。有可能,当我设置一些边框时,他可以改变组件的外观?总之,不要。API建议您将边框添加到封闭容器中: 虽然从技术上讲,您可以在继承自JComponent的任何对象上设置边框,但许多标准Sw

我想知道为什么我的元素JTextField在设置新边框后高度发生变化:

  packagesAddField.setBorder(BorderFactory.createLineBorder(Color.RED));
在这段代码之后,我的JTextField改变了高度(从上到下大约1px,从下到下大约1px)。有可能,当我设置一些边框时,他可以改变组件的外观?

总之,不要。API建议您将边框添加到封闭容器中:

虽然从技术上讲,您可以在继承自
JComponent
的任何对象上设置边框,但许多标准Swing组件的外观实现在用户设置边框时并不适用。通常,当您要在标准Swing组件上设置边框而不是
JPanel
JLabel
时,建议您将组件放置在
JPanel
中,并在
JPanel
上设置边框


可选地,考虑一个.< /p>是的边界至少需要1px来绘制。问题在哪里?您使用的是

null
layout吗?我使用的是javax.swing.GroupLayout。JTextField在jpanelf中为了更快地获得更好的帮助,发布一个(最小、完整、可验证的示例)。