我想为我的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说:“......这会导致重新绘制组件”。为什么我错了?
答案 0 :(得分:0)
这将立即导致重绘。每个下一个setMargin都不执行任何操作,因为类Insets具有自定义方法等于。当您设置两次相同的对象时,不会发生属性更改,也不会调用重绘。
答案 1 :(得分:0)
将此代码用于边框。
JTextField textField = new JTextField();
Border border = BorderFactory.createLineBorder(Color.BLUE, 1);
textField.setBorder(border);