我想一個邊距設置爲我的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);
}
}
我的意思是它的工作原理,但我希望塗料在無限循環調用因爲setMargin的JavaDoc說:「...這會導致組件的重繪」。爲什麼我錯了?
爲什麼在塗料中?爲什麼不在構造函數中? –
頁邊距在運行時可能會發生變化(簡化示例) – matthias
您應該採用「推送」模式:根據事件處理函數調用setMargin(),該事件需要重新計算邊距,並依靠自動佈局失效和更新。 paint()方法應該繪製組件,而不改變它;找出合適的保證金規模是完全不合適的。 –