Java Swing JtextField 插图

Posted

技术标签:

【中文标题】Java Swing JtextField 插图【英文标题】:Java Swing JtextField inset 【发布时间】:2012-01-08 11:30:54 【问题描述】:

我正在使用 Netbeans GUI,我想在我的 jTextField 开头添加 3 个像素的空间:

我已经在 GUI 中尝试使用 setMargin、setInset,但它并没有改变任何东西。

我还有一个问题,为什么右下边框不圆?这是我的代码:

Border roundedBorder = new LineBorder(new Color(210,210,210), 1, true);
researchTextField.setBorder(roundedBorder);

非常感谢,

问候

【问题讨论】:

【参考方案1】:

使用setMargin(...) 应该可以工作。

但是,如果您还使用边框,那么这可能是问题所在。

尝试使用CompoundBorder,其中内边框是 EmptyBorder(),外边框是您的另一个边框。例如:

Border rounded = new LineBorder(new Color(210,210,210), 1, true);
Border empty = new EmptyBorder(0, 3, 0, 0);
Border border = new CompoundBorder(rounded, empty);
textField.setBorder(border);

阅读 How to Use Borders 上的 Swing 教程部分,了解更多信息和示例。

为什么右下边框不圆?

我不确定为什么您的底部/右侧没有圆角。在 XP 上使用 Metal LAF 时,右边框(顶部和底部)看起来是圆形的,但左边框不是圆形的。当我使用 2 或更大的边框大小时,所有角都显得同样圆润。

【讨论】:

【参考方案2】:

setMargin(Inset myInset) 为我工作:

import java.awt.Insets;
import javax.swing.*;

public class TextFieldFun 
   public static void main(String[] args) 
      JTextField textfield = new JTextField(20);
      JPanel panel = new JPanel();
      panel.add(textfield);

      textfield.setMargin(new Insets(0, 10, 0, 0));

      JOptionPane.showMessageDialog(null, panel);
   

【讨论】:

以上是关于Java Swing JtextField 插图的主要内容,如果未能解决你的问题,请参考以下文章

java.swing JtextField 中怎么限制只能输入数字

java swing JTextField设置PlaceHolder [重复]

java swing JTextField设置PlaceHolder [重复]

Java Swing:JTextField 没有按预期失去焦点

如何在 Java Swing 中控制 JTextField 的宽度?

将文件路径拖放到 Java Swing JTextField