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