繁体   English   中英

JTextField边距不适用于边框

[英]JTextField margin doesnt work with border

我有一个JTextField ,我想要setMargin。 但是当我设置任何边框时,它都不能正常工作。 它的保证金功能不起作用。 这是我的代码;

import java.awt.Color;
import java.awt.Insets;
import java.io.IOException;

import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class ImageField {

public static void main(String[] args) throws IOException {

    JTextField textField = new JTextField();
    textField.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));
    textField.setMargin(new Insets(0, 20, 0, 0));
    JOptionPane.showMessageDialog(null, textField, "",
            JOptionPane.PLAIN_MESSAGE);
    }
}

如果我告诉这一行,它是有效的

 //textField.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY));

边距有一些边框问题,要解决问题,可以尝试使用CompoundBorder将EmptyBorder设置为内边框,并将所需边框(在您的情况下为lineBorder)作为外边框。

这样的事情应该有效:

Border line = BorderFactory.createLineBorder(Color.DARK_GRAY);
Border empty = new EmptyBorder(0, 20, 0, 0);
CompoundBorder border = new CompoundBorder(line, empty);
textField.setBorder(border);

JavaDoc中读取它。

设置文本组件边框与其文本之间的边距空间。 文本组件的默认Border对象将使用此值来创建适当的边距。 但是,如果在文本组件上设置了非默认边框,则Border对象有责任创建适当的边距空间(否则将有效地忽略此属性)。 这会导致重新绘制组件。 PropertyChange事件(“margin”)将发送给所有侦听器。

您可能正在寻找复合边框:

BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.DARK_GRAY),
                BorderFactory.createEmptyBorder(0, 20, 0, 0));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM