金曜日, 5月 12, 2006
[Java]メモ1
▼質問
『シリアライズ可能クラス MessageBox は long 型の static final serialVersionUID
フィールドを宣言していません。』のメッセージが出る。
▼回答
Eclipse3.1以降のデフォルトでのシリアライズ可能クラスチェックの警告。
『ウィンドウ(W)』→『設定』→『Java』→『コンパイラー』→『エラー/警告』
→『潜在的なプログラミングの問題(P)』→『serialVersionUIDなしのシリアライズ可能クラス(Z)』
を『警告』から『無視』にするといいらしい。
■参考サイト
http://ivory.ap.teacup.com/applet/omron58/msgcate6/archive
▼質問
『serialVersionUID』って何?
▼回答
『!』の警告アイコンをクリックするとメニューが表示するので、その中から『デフォルト・シリアル・バージョン
IDの追加』をクリックすると下記のコードが追加されて警告が消えた。
/**
*
*/
private static final long serialVersionUID = 1L;
他のメニューにある『生成シリアル・バージョンIDの追加』で追加しても同じ結果が得られた。
/**
*
*/
private static final long serialVersionUID = 8219119111923576514L;
【>Java オブジェクト直列化仕様: 4 - クラス記述子】
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/serialization/spec/class.doc6.html
■参考サイト
【SaikyoLine.jp: serialVersionUIDって。】
http://saikyoline.jp/weblog/archives/2005/09/serialversionui.html
【SuppressWarnings (Java 2 Platform SE 5.0)】
http://www.ep.u-tokai.ac.jp/~nakazato/API/1.5.0/docs/ja/api/java/lang/SuppressWarnings.html
▼質問
CanvasクラスにPanelクラスを追加することはできるのか?
▼回答
できない?!PanelクラスにCanvasクラスに追加することは可能である。
▼質問
Panelに追加したCanvasがrepaintしても再描画されない。
▼回答
removeらしい。「createImage」、「getGraphics」、「drawImage」を使用しての
ダブルバッファリングの仕方に問題があったようだ。前回のイメージを取得して描画するという事を考えて
処理をしないと描画されないのはなぜなのかがわからない。ドツボにはまる!
▼質問
描画したCanvasに透明のLabelを貼りたい。
▼回答
うまくできなかったが、CanvasをComponentに変えたらうまくいった!?透明のLabelにはSwingのラベル
クラスのJLabelを使用した。このラベルは、デフォルトで透過状態になっている。
class Test extends Component
{
public Test() {
this.setLayout(null);
JLabel jlabel = new JLabel("JLabel");
jlabel.addMouseListener(jlabel);
this.add(jlabel).setBounds(0, 0, 100, 20);
}
}
■参考サイト
【アプリケーション・フレーム/Hello World】
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/AppFrameHelloWorld.html
▼質問
Javaには、VBのような参照渡し(ByRef)とか値渡し(ByVal)はあるの?
▼回答
Javaでは、オブジェクトと配列を渡すと参照渡しでそれ以外は値渡しらしい。
■参考サイト
【Q&Aピックアップ「はじめから学ぶJava」】~値渡しと参照渡しの違い
http://edu.nikkeibp.co.jp/edu/column/c_qa/41221/index.html
【VB 値型と参照型】
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm
【Chapter 01 基本構文の変化 - @IT】~引数の値渡し(ByVal)と参照渡し(ByRef)のデフォルト
http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_01/vbnet2_01_03.html
▼質問
extendsに複数のクラスを継承させたいがっ!できないのか?
▼回答
できない。方法としては、段階的に継承するか?!インターフェイスを使ってするらしい。
▼質問
テキストフィールド(TextField)の初期状態で日本語入力にしたができるのか?
▼回答
できるみたい。このサイトの通りにやったらうまくできました。素晴らしい♪感謝!感謝!感謝!ですね!!
【【Swing】 IMEの切り替え】
http://dev105.souko105.net/index.php?%A1%DASwing%A1%DB%20%A3%C9%A3%CD%A3%C5%A4%CE%C0%DA%A4%EA%C2%D8%A4%A8
TextField txt = new TextField(5);
txt.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent e) {
e.getComponent().getInputContext().setCharacterSubsets(new Character.Subset[] { InputSubset.KANJI });
}
public void focusLost(FocusEvent e) {
e.getComponent().getInputContext().setCharacterSubsets(null);
}
});
『シリアライズ可能クラス MessageBox は long 型の static final serialVersionUID
フィールドを宣言していません。』のメッセージが出る。
▼回答
Eclipse3.1以降のデフォルトでのシリアライズ可能クラスチェックの警告。
『ウィンドウ(W)』→『設定』→『Java』→『コンパイラー』→『エラー/警告』
→『潜在的なプログラミングの問題(P)』→『serialVersionUIDなしのシリアライズ可能クラス(Z)』
を『警告』から『無視』にするといいらしい。
■参考サイト
http://ivory.ap.teacup.com/applet/omron58/msgcate6/archive
▼質問
『serialVersionUID』って何?
▼回答
『!』の警告アイコンをクリックするとメニューが表示するので、その中から『デフォルト・シリアル・バージョン
IDの追加』をクリックすると下記のコードが追加されて警告が消えた。
/**
*
*/
private static final long serialVersionUID = 1L;
他のメニューにある『生成シリアル・バージョンIDの追加』で追加しても同じ結果が得られた。
/**
*
*/
private static final long serialVersionUID = 8219119111923576514L;
【>Java オブジェクト直列化仕様: 4 - クラス記述子】
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/serialization/spec/class.doc6.html
■参考サイト
【SaikyoLine.jp: serialVersionUIDって。】
http://saikyoline.jp/weblog/archives/2005/09/serialversionui.html
【SuppressWarnings (Java 2 Platform SE 5.0)】
http://www.ep.u-tokai.ac.jp/~nakazato/API/1.5.0/docs/ja/api/java/lang/SuppressWarnings.html
▼質問
CanvasクラスにPanelクラスを追加することはできるのか?
▼回答
できない?!PanelクラスにCanvasクラスに追加することは可能である。
▼質問
▼回答
ダブルバッファリングの仕方に問題があったようだ。前回のイメージを取得して描画するという事を考えて
処理をしないと描画されないのはなぜなのかがわからない。ドツボにはまる!
▼質問
描画したCanvasに透明のLabelを貼りたい。
▼回答
うまくできなかったが、CanvasをComponentに変えたらうまくいった!?透明のLabelにはSwingのラベル
クラスのJLabelを使用した。このラベルは、デフォルトで透過状態になっている。
class Test extends Component
{
public Test() {
this.setLayout(null);
JLabel jlabel = new JLabel("JLabel");
jlabel.addMouseListener(jlabel);
this.add(jlabel).setBounds(0, 0, 100, 20);
}
}
■参考サイト
【アプリケーション・フレーム/Hello World】
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/AppFrameHelloWorld.html
▼質問
Javaには、VBのような参照渡し(ByRef)とか値渡し(ByVal)はあるの?
▼回答
Javaでは、オブジェクトと配列を渡すと参照渡しでそれ以外は値渡しらしい。
■参考サイト
【Q&Aピックアップ「はじめから学ぶJava」】~値渡しと参照渡しの違い
http://edu.nikkeibp.co.jp/edu/column/c_qa/41221/index.html
【VB 値型と参照型】
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm
【Chapter 01 基本構文の変化 - @IT】~引数の値渡し(ByVal)と参照渡し(ByRef)のデフォルト
http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_01/vbnet2_01_03.html
▼質問
extendsに複数のクラスを継承させたいがっ!できないのか?
▼回答
できない。方法としては、段階的に継承するか?!インターフェイスを使ってするらしい。
▼質問
テキストフィールド(TextField)の初期状態で日本語入力にしたができるのか?
▼回答
できるみたい。このサイトの通りにやったらうまくできました。素晴らしい♪感謝!感謝!感謝!ですね!!
【【Swing】 IMEの切り替え】
http://dev105.souko105.net/index.php?%A1%DASwing%A1%DB%20%A3%C9%A3%CD%A3%C5%A4%CE%C0%DA%A4%EA%C2%D8%A4%A8
TextField txt = new TextField(5);
txt.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent e) {
e.getComponent().getInputContext().setCharacterSubsets(new Character.Subset[] { InputSubset.KANJI });
}
public void focusLost(FocusEvent e) {
e.getComponent().getInputContext().setCharacterSubsets(null);
}
});