≒ 初swing

昨日からswing。以下のコードの場合、JPanelを`普通に別クラスとして書くか、インナークラスで書くかで変数のスコープが変わるのは理解してるんですけど、

なぜ、showStatus()がインナーだと活きて、分けるとJApplet側に書いても、もちろんJPanel側に書いても動作しないのかがわかりません。

 

import java.awt.*;

import javax.swing.*;

public class Ch13Rewrite4 extends JApplet {
public void init() {
getContentPane().add(new MyPane());
}

class MyPane extends JPanel {
public void paintComponent(Graphics g) {
Dimension d = getSize();
int xc = d.width / 2;
int yc = d.height / 2;
int radius = (int) (((d.width < d.height) ? d.width : d.height) * 0.35);
int rr = (int) (Math.random() * 255.9);
int gg = (int) (Math.random() * 255.9);
int bb = (int) (Math.random() * 255.9);
Color c = new Color(rr, gg, bb);
g.setColor(c);

g.fillOval(xc – radius, yc – radius, radius * 2, radius * 2);

g.setColor(Color.white);
FontMetrics fm=g.getFontMetrics();
String s=rr+” : “+gg+” : “+bb;
g.drawString(s, xc-(fm.stringWidth(s)/2), yc);
showStatus(d.width + ” : ” + d.height + ” : ” + radius);

g.drawLine(0, yc, d.width, yc);
g.drawLine(xc, 0, xc, d.height);
}
}
}

とりあえず備忘。追求はおいおい。

≒ アプレットが初期化されていません

独習Java」。ようやく13章アプレット。で、初めてのアプレットでつまずくw

書いてあるとおりのコードで、書いてあるとおり起動してエラー(NoClassdefFoundError)、なのにアプレットは立ち上がり「アプレットが初期化されてません」との表示。

例によってディレクトリ上がったり下がったり、色々して結局、パッケージ指定外して(デフォルトパッケージで)書き直したら無事起動。

エクリプスのコンソールから立ち上げると普通に動いたので、もしかしてと思って試したら行けた。なぜかは(いつも通り)分からない。

アプレット関連ではパッケージ指定しない方が良いのかな?でもフォルダ(=パッケージ)で管理してる方が良いんだけどな。

アプレットは全部コンソールから起動して学習するか。

≒ Eclipse テンプレート タスクタグ 自動生成しない

少し日々に余裕が出来てきて、自宅学習をしばらく前から再開してる。
メモ書きにこの休眠ブログを使っていこうと思う。

で、表題の件。JAVA初心者なんで当然あほみたいなことで詰まる。今回はEclipseの設定方法について。

EclipseはJAVAとの親和性高いとは聞いてたけど予想以上に便利w 勝手にどんどん書いてくれる感じ。で、コードに全角入ってるのがイヤなので、「shift+Alt+z」でtry~catchで括って自動で挿入されるタスクタグが日本語なのが気に入らない。日本語化を戻せば良いんだけど、とりあえず消すだけの小手先の対処法が以下↓

「ウインドウ」>「設定」>「コードスタイル」>「コードテンプレート」。そのページ内の「コード」>「catchブロック本文」を編集する。
ググって出てくる「エディター」>「テンプレート」のとこを編集してもなぜか反映されない。以上。