ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

コンテンツペイン的な

2009年12月01日 21時51分05秒 | ソフト開発日記
今までNetBeansでJFrameフォームしか作ってこなかったけど
JPanelフォームを別に作ってJFrameから呼びだすことに挑戦

とりあえずJPanelフォームのPanelingクラスは次のような感じに

public class Paneling extends javax.swing.JPanel {
  public Paneling() {
    initComponents();
  }
  @Override
  public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawRect(50, 50, 101, 110 );
    g.drawString("Hello! this is paneling", 30, 30);
  }
  (略)
}

JFrameフォームのMainクラスのコンストラクタには

  public Main() {
    initComponents();
    setLayout(new BorderLayout());
    Paneling p = new Paneling();
    add(p);
  }

といった具合に。ようやくソースコードを分けたプログラムが書けました。
NetBeansによるコンポーネントを何も配置しない状態だと、文字と図形がちゃんと表示されてよかった。

けどタブ付き区画を利用して狙ったタブ(パネル)に表示させる方法がわからず。
タブの変数名を使いjTab.add(p)とすると新しいタブが出来てその中に表示され
パネルの変数名を使いjPanel.add(p)とすると何も表示されず。

というよりタブ付き区画の使い方がまだよくわかってないのでそこから勉強しようと思う

googleが発表した新言語「Go」

2009年12月01日 15時51分48秒 | 独り言
大学の先輩から聞いた情報。新しいプログラミング言語「Go」についてドキドキしながら調べてみました。

「Go」って名前みたいだけど「Go言語」とか言わないと
会話の中に出てきても伝わらないような気がします。
Googleの頭の文字二つとってGoなのかな?
そうるすとこれってもしかして「ゴー」じゃなくて「グ」って読むんでしょうか
わかんないけどとりあえず人前で「グ」と呼ぶのはやめといたほうがよさそう。

googleのすごい社員さん方が7人でgoogleの20%の休み時間で開発したらしい。すごい。憧れる。
休み時間が20%ってのもすごい。憧れる。
GoはC言語に似た構文で、より優れた機能を持ってたり複雑な構文は排除したり、やたら高速になってなりするらしい。
ただ検索しにくいという点はあまり変わってない気がします。

C言語は大学2年ではじめて習った言語で愛着があり、今でも結構使ってたりして好きなので「Go」とても興味があります。
「Go」の勉強したいけど、オフィシャルページに行っても英語で読むのが大変・・。
ゆっくり英文読解しながら勉強していきながら雑誌とかで講座とか特集とか待ちながら的なあれします

図書館の本情報

2009年12月01日 15時06分23秒 | ソフト開発日記
Swingのプログラマにとって最も重要なのは
コンテンツペインらしい。
NetBeansで作ってるせいかよくわからない。また後で調べよう。

Swingでパネルに描写を行う手順は
・JPanelを拡張するクラスを定義する。
・そのクラスのpaintComponent()メソッドをオーバーライドする。
らしい。paintComponent()はGraphics型の引数を1つとる。

そしてpaintComponent()は絶対に自分で呼び出してはいけない。とのこと。
ウィンドウの再描写が必要になる度、Javaのイベントハンドらはウィンドウへ通知。
自動でpaintComponent()が呼びだされる。
けどウィンドウの再描写が必要なときっているかわかんないという。
アニメーション表示させるなら強制的に呼び出してもいい気がする。
そんな時はrepaint()メソッドでいいらしい。
これはjava.awt.Componentにあるメソッドかな。いいのかな

そんでもってpaintComponent()メソッドをオーバーライドするクラスは
JPanelクラスを拡張しているから、スーパークラスが役割を果たすため
super.paintComponent()を呼びだす必要があるみたい。
ここまでをまとめると

class Test extends JPanel{
  public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawString("Hello, World", 30, 30);
  }
}

こういうことだろうか。


ボタンの動作を再描写は同じイベントディスパッチスレッド?