![](/img/trans.png)
[英]built-in Java classes/methods to convert between binary, decimal, and octal?
[英]Methods in built-in classes
我對Java有點陌生。 我正在閱讀Java代碼以了解更多信息,這讓我感到困惑。 方法只有在被調用時才會執行,對嗎? 但是,諸如Runnable類中的paint()
, paintComponent()
, run()
類的內置類的方法如何?一旦使用實現了這些方法的類來實例化對象,這些方法是否在未顯式調用的情況下執行? ? 那真的是這樣嗎?
像此代碼中的示例一樣,方法paint()
並未真正被調用。
import javax.swing.*;
import java.awt.*;
public class FrameExampleTest{
public static void main(String args[]){
FrameExample frame = new FrameExample();
frame.setSize(500,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class FrameExample extends JFrame{
PanelExample panel;
public FrameExample(){
Container c = getContentPane();
panel = new PanelExample();
c.add(panel,BorderLayout.CENTER);
}
}
class PanelExample extends JPanel{
public PanelExample(){
setSize(300,200);
}
public void paint(Graphics g){
g.fillArc(20,20,30,30,0,360);
}
}
您不會調用paint或自己運行,但是JVM中的其他代碼會為您調用它。 例如,Thread類中的實例代碼將調用您的run方法。 事件循環中的代碼將調用paint或paintComponent。 隨着時間的流逝,您會發現沒有神奇的事物。 每當調用方法時,其他一些代碼就會調用它。
是。 窗口框架會為您調用paint
和paintComponent
方法。 它確定何時需要油漆/重新油漆(例如,何時移動,打開,重新打開窗口,調整大小等)。 對於這些方法的Javadoc有時會提到,不建議/不要求直接調用它們,但是需要實現它們來執行此類操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.