私はこのコードをオンラインで見つけ、私のアプリケーションで動作します。私はそれを追跡し、より完全に理解しようとしています。「add(new Surface());」の使用を説明するドキュメントが見つかりません。声明。私はそれが何をするかを理解していますが、ここに私が理解していないものがあります:
- 「SomeObject」なしで add() メソッドはどのように機能しますか。その前に。add() メソッドは、それを含むオブジェクト (SampleAddMethod) 用であると想定しているようです。これがいつ、どのように有効であるかについてのドキュメントが見つかりません。
- 「super.add(new Surface());」は機能するのに、「SampleAddMethod.add(new Surface());」はなぜ機能するのですか? 不合格?add() メソッドは Component から継承されているようで、SampleAddMethod は Component である JFrame です。
- (new Surface()) が「匿名クラス」を作成するのは正しいですか?
(下記サンプルコード)
package testMainMethod;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
class Surface extends JPanel {
private void doDrawing(Graphics g, int x) {
double xd = (double) x;
Graphics2D g2d = (Graphics2D) g;
// Code to draw line image goes here
}
@Override
public void paintComponent(Graphics g) {
for (int i = 0; i < 512; i++) {
// super.paintComponent(g); // this erases each line
doDrawing(g, i);
}
}
}
public class SampleAddMethod extends JFrame {
public SampleAddMethod() {
initUI();
}
private void initUI() {
setTitle("Lines");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new Surface());
setSize(650, 350);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SampleAddMethod lines = new SampleAddMethod();
lines.setVisible(true);
}
});
}
}