≒ 続) swing インナークラス
setBackground() はJPanel側では記述はできるけど無効。
JApplet側のinit()内に記述すると機能する。おそらくstart()その他でもOK。
swing(つまりpaintComponent())じゃなければ普通にオーバーライドしてるpaint()に記述して使えるんだけど?
12年6月14日(木)‡10時12分26秒 ‡ 未分類
I am being tested.
タグ『 Java 』
setBackground() はJPanel側では記述はできるけど無効。
JApplet側のinit()内に記述すると機能する。おそらくstart()その他でもOK。
swing(つまりpaintComponent())じゃなければ普通にオーバーライドしてるpaint()に記述して使えるんだけど?
12年6月14日(木)‡10時12分26秒 ‡ 未分類
昨日から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);
}
}
}
とりあえず備忘。追求はおいおい。
12年6月13日(水)‡22時19分35秒 ‡ 未分類
「独習Java」。ようやく13章アプレット。で、初めてのアプレットでつまずくw
書いてあるとおりのコードで、書いてあるとおり起動してエラー(NoClassdefFoundError)、なのにアプレットは立ち上がり「アプレットが初期化されてません」との表示。
例によってディレクトリ上がったり下がったり、色々して結局、パッケージ指定外して(デフォルトパッケージで)書き直したら無事起動。
エクリプスのコンソールから立ち上げると普通に動いたので、もしかしてと思って試したら行けた。なぜかは(いつも通り)分からない。
アプレット関連ではパッケージ指定しない方が良いのかな?でもフォルダ(=パッケージ)で管理してる方が良いんだけどな。
アプレットは全部コンソールから起動して学習するか。
12年6月5日(火)‡21時21分19秒 ‡ ただの自分向けメモ
月 | 火 | 水 | 木 | 金 | 土 | 日 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |