質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

2874閲覧

パネルが表示されない

daichanman123

総合スコア32

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2016/09/30 05:18

編集2016/09/30 07:22
コード public class Part01 extends JApplet{ int AppletW = 1000; //アプレット幅 int AppletH = 800; //アプレット高さ /** * 初期メソッド */ public void init(){ setSize(AppletW, AppletH); BasePanel basePanel = new BasePanel(AppletW, AppletH); getContentPane().add(basePanel); basePanel.requestFocusInWindow(); //basePanelのキー入力有効化 } }
コード public class BasePanel extends JPanel{ int PanelW; //パネルの幅 int PanelH; //パネルの高さ JPanel openingPanel; /** * コンストラクタ */ public BasePanel(int PanelW, int PanelH){ this.PanelW = PanelW; this.PanelH = PanelH; setLayout(null); setBounds(0, 0, PanelW, PanelH); openingPanel = MyLibrary.createPanel(PanelW, PanelH, Color.GREEN, true); add(openingPanel); JLabel jl1 = MyLibrary.createLabel("こんにちは", 250, 200, 500, 100, Color.RED, Color.WHITE, true, 44, 500, 100, Color.BLUE, 8); openingPanel.add(jl1); JLabel jl2 = MyLibrary.createLabel("こんばんは", 300, 500, 400, 100, Color.WHITE, null, false, 20, 400, 100, null, 0); openingPanel.add(jl2); } /** * キー入力処理 */ @Override public void processKeyEvent(KeyEvent ke){ if(ke.getID() == KeyEvent.KEY_PRESSED){ //何かキーが押された場合 if(ke.getKeyCode() == KeyEvent.VK_SPACE){ //押されたキーがSPACEの場合 System.out.println("スペース押された"); remove(openingPanel); JPanel backgroundPanel = MyLibrary.createPanel(PanelW, PanelH, Color.BLACK, true); add(backgroundPanel); } } } }
コード public class MyLibrary{ /** * パネル作成 */ public static JPanel createPanel(int PanelW, int PanelH, Color c, boolean opaque){ JPanel jp = new JPanel(); jp.setBackground(c); //背景色設定 jp.setLayout(null); //レイアウト手動設定 jp.setOpaque(opaque); //不透明化設定 jp.setBounds(0, 0, PanelW, PanelH); //位置・サイズ設定 return jp; } /** * ラベル作成 */ public static JLabel createLabel(String str, int x, int y, int w, int h, Color strColor, Color backColor, boolean opaque, int fontSize, int FrameW, int FrameH, Color FrameColor, int FrameSize){ JLabel jl = new JLabel(); jl.setText(str); //文字設定 jl.setBounds(x, y, w, h); //位置・範囲設定 jl.setForeground(strColor); //文字色設定 jl.setBackground(backColor); //範囲背景設定 jl.setOpaque(opaque); //不透明化設定 jl.setFont(new Font(Font.MONOSPACED, Font.BOLD, fontSize)); //フォント設定 jl.setPreferredSize(new Dimension(FrameW,FrameH)); //枠領域設定 jl.setBorder(new LineBorder(FrameColor, FrameSize, true)); //枠色・大きさ・角設定 jl.setHorizontalAlignment(JLabel.CENTER); //枠内水平位置設定 jl.setVerticalAlignment(JLabel.CENTER); //枠内垂直位置設定 return jl; } }

上のプログラムですが
はじめベースパネルにオープニングパネルが貼り付けられていて、
スペースキーを押すとオープニングパネルが取り除かれバックグランドパネルがベースパネルに貼り付けられるようになっています。
実行してスペースキーを押すと”スペース押された”はコンソールに表示されるのですが、パネルがオープニングパネルのままでバックグランドパネルが表示されなかったのですが、表示の枠?アプレットの枠?をいじるとバックグランドパネルが表示されました。
一応はちゃんと動いてるみたいなのですが、いちいち枠をいじらないとちゃんと表示されないのはなぜなのでしょうか?
よろしくお願いします。

takitamaru👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

java-beginner

2016/09/30 06:37

MyLibraryのソースも貼り付けてください。
daichanman123

2016/09/30 07:23

MyLibraryクラスも載せておきました。
guest

回答1

0

ベストアンサー

「public void processKeyEvent(KeyEvent ke)」のif文の最後に「repaint();」を追加してみてください。

投稿2016/09/30 07:32

java-beginner

総合スコア452

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問