- - PR -
【Javaアプリ】Panelの再描画の方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-04-23 17:19
こんにちは。
現在、Javaアプリ(アプレットではありません)でログイン画面に入って、 ログインに成功したら、違う画面を同じFrame内に表示しようと考えてますが、 なかなかうまくいきません(Labelだけの再描画ではありません。)。 具体的には、元の画面が中途半端にしか消えず、新しい画面が表示されないという 症状になっています。 javaアプリの本格的な作成に関するサイトを探しているのですが、 なかなか見つからず、困ってます。 解決方法、または参考になるサイトをご存知の方、 ぜひともアドバイスよろしくお願いいたします。 ●全体的な流れ public class ButtonPressTest extends Frame { ・・・ //フィールド変数の宣言 ・・・ private Panel getPanel() { //初期化時 if (Panel == null) { //ログイン画面の作成 Panel = new Panel(); Panel.add(getTextField(), null); Panel.add(getButton1("ログイン"), null); nowdisp=1; //ログイン時 } else if(nowdisp == 1){ // ログイン完了後の作成 Panel.setSize(261, 58); Panel.add(getLabel1(), null); Panel.add(getButton3(), null); ・・・ nowdisp=2; } return Panel; } private EButton getEButton1() { if (eButton1 == null) { eButton41 = new EButton(); eButton41.setBounds(141, 83, 120, 54); eButton41.setLabel("change disp"); eButton41.addActionListener (new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.out.println("actionPerformed(change disp)"); // TODO Auto-generated Event stub actionPerformed() getEPanel(); //ここでnowdisp=1になっており、1の処理を通っていることを確認 repaint(); } }); } return eButton1; } ・・・ public static void main(String[] args) { ButtonPressTest bptest = new ButtonPressTest(); bptest.show(); } public ButtonPressTest () { super(); initialize(); } private void initialize() { this.setSize(300,200); this.setTitle("Frame"); this.add(getPanel(), java.awt.BorderLayout.CENTER); this.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { //省略 } }); } } [ メッセージ編集済み 編集者: Javaスターター 編集日時 2005-04-23 17:21 ] |
|
投稿日時: 2005-04-24 04:59
再描画がうまくいっていないのではなく、getPanel()で生成したPanelにnowdisp の値が変更されても、removeせずに次々にaddしてるからではないですか?
javaアプリの本格的な作成に関するサイトを探しているのですが、 なかなか見つからず、困ってます。 「本格的な作成」がどの程度かわかりませんが、検索すればいくらでもあると思います。 本もいろいろ出てますし。 ところで、なぜSWING,SWTでなく、AWTで作成するのですか? |
|
投稿日時: 2005-04-24 08:47
CardLayoutを使用して画面を切り替えたらいかがでしょうか?
UI で AWT を使用するならこの辺でしょうか。 |
|
投稿日時: 2005-04-25 01:03
未記入さん、バテ太さん、回答ありがとうございました。
未記入さんの言うとおりで、removeすることによって、解決しました。 バテ太さんの方法も検討してみます。 本当に助かりました。ありがとうございました。 なお、参考までに、Awtを使用している理由はJ2meを使おうと思っているからです。 |
1