Swing使用margin扩展JTextField

时间:2014-05-14 06:40:15

标签: java swing jtextfield

我想为我的JTextField设置一个边距,

因此我做了:

class MyJTextField extends JTextField {

@Override
public void paint(Graphics g) {
    System.err.println("paint " + System.currentTimeMillis());
    setMargin(new Insets(0, 0, 0, 25));
    super.paint(g);
}
}

我的意思是它有效,但我希望在无限循环中调用paint,因为setMargin的JavaDoc说:“......这会导致重新绘制组件”。为什么我错了?

2 个答案:

答案 0 :(得分:0)

这将立即导致重绘。每个下一个setMargin都不执行任何操作,因为类Insets具有自定义方法等于。当您设置两次相同的对象时,不会发生属性更改,也不会调用重绘。

答案 1 :(得分:0)

将此代码用于边框。

JTextField textField = new JTextField();
Border border = BorderFactory.createLineBorder(Color.BLUE, 1);
textField.setBorder(border);