Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

初心者なので教えてください。

WEB上に下記のようなソースファイルがありました


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.String;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;


public class Sample2 extends JFrame {
    final static int C00 = 30;

    public Sample2() {
        DrawPanel L00 = new DrawPanel();
        add(L00);
        new Timer(C00, L00).start();
    }

    public static void main(String[] A00) {
        Toolkit.getDefaultToolkit().setDynamicLayout(true);

        JFrame L00 = new Sample2();
        L00.setDefaultCloseOperation(EXIT_ON_CLOSE);
        L00.setBackground(Color.white);
        L00.setSize(320, 240);
        L00.setVisible(true);
    }
}

class DrawPanel extends JPanel implements ActionListener {
    static final String C00 = "jp/tuyano/eclipsebook4/針.jpg";
    Image I00;
    int I01;
    int I02;
    int I03 = 0;

    public DrawPanel() {
        setBackground(Color.white);

        I00 = new ImageIcon(C00).getImage();
        I01 = I00.getWidth(this);
        I02 = I00.getHeight(this);
    }

    public void actionPerformed(ActionEvent A00) {
        I03 = ++I03 % 360;
        repaint();
    }

    public void paintComponent(Graphics A00) {
        Graphics2D L00 = (Graphics2D)A00;
        L00.setColor(Color.white);
        L00.fillRect(0, 0, getWidth(), getHeight());

        L00.rotate(I03 * 16 / 180, getWidth() / 2.0, getHeight() / 2.0);
        L00.drawImage(I00, (getWidth() - I01) / 2, (getHeight() - I02) / 2, this);
    }
}

このプログラムに似たものをつくりたいのですが、内容が理解できません。
どなたかこのプログラムの内容がわかるかたいらっしゃいませんか?

9

回答

78897

閲覧

9件の回答

評価

0

まず理解しようとしてください。話はそれからです。
「初心者なので」は、たいていの場合あまりいい印象を読み手に与えません。

評価

0

申し訳ございません。

class DrawPanel extends JPanel implements ActionListener {
から下の部分はわかるのですが、public class Sample2 extends JFrame {
から下の部分が理解できません。
ここはただ単にフレームの設定を行っているのでしょうか?

評価

0

> new Timer(C00, L00).start();
ここでDrawPanelに対してタイマーを起動しています。
30msecごとにactionPerformedが呼ばれて、画像が回転します。

>class DrawPanel extends JPanel implements ActionListener {
以降が分かるのであれば、後はわかるでしょう。

ただこのサンプルだと、角度計算がいんちきなので、正しくラジアンに変換しましよう。

評価

0

ありがとうございます。
setDynamicLayout(true);及びL00.setDefaultCloseOperation(EXIT_ON_CLOSE);は何を意味しているのでしょうか?

評価

0

JavaDocに書いてあります。

評価

0

setDynamicLayoutはウィンドウ内部を描画しながらサイズ変更できる
setDefaultCloseOperationはウィンドウを閉じたときに自動的にプログラムを終了するという意味で
あってるでしょうか?

評価

0

聞くより試した方が早いと思うけどなー
聞いてばかりでは上達しませんよ。

評価

0

わかりました。ありがとうございます。

評価

0

そういうのをひととおり当たってみて、それでも分からないところを質問しましょう。
自分で調べて、試して、理解するほうが、人に聞いて「ふんふんなるほど」と思うより絶対に力になります。
また、自分の力でできたときは、人に聞いて済ませるよりいい気分になれますよ。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。