2016-04-07 19 views
1

私はこの質問にどのように言いたいのか分かりませんが、私は何をしようとしているのか説明できます。 私のプログラムでは、背景イメージと底面に3つのボタンがある基本メニューを描画しています。ボタンの1つを押すと、メニューと背景イメージが別のシーンに変わるようにしたいと思います。プレイを押してゲームを開始するか、オプションを押してオプションメニューに移動するなど。Java Swingに表示される内容を変更するにはどうすればよいですか?

これは主メニューのための私のコードです:

private final void initUI() { 
    JPanel panel = new JPanel(); 
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
    add(panel); 

    panel.add(Box.createVerticalGlue()); 

    JPanel bottom = new JPanel(); 
    bottom.setAlignmentX(1f); 
    bottom.setLayout(new BoxLayout(bottom, BoxLayout.X_AXIS)); 

    JButton plyBtn = new JButton("Play"); 
    plyBtn.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent event){ 
      GameFrame_Test1 game1 = new GameFrame_Test1(); 
      game1.setVisible(true); 
     } 
    }); 

    JButton opBtn = new JButton("Options"); 


    JButton quitButton = new JButton("Exit"); 

    quitButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent event) { 
      System.exit(0); 
     } 
    }); 
    bottom.add(plyBtn); 
    bottom.add(Box.createRigidArea(new Dimension(100, 0))); 
    bottom.add(opBtn); 
    bottom.add(Box.createRigidArea(new Dimension(100, 0))); 
    bottom.add(quitButton); 
    bottom.add(Box.createRigidArea(new Dimension(100, 0))); 

    panel.add(new GraphicTest_1()); 
    panel.add(bottom); 
    panel.add(Box.createRigidArea(new Dimension(0,15))); 


    setTitle("Justice GUI"); 
    setSize(1280, 720); 
    setLocationRelativeTo(null); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public static void main(String[] args) { 

    EventQueue.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      DisplayFrame ex = new DisplayFrame(); 
      ex.setVisible(true); 
     } 
    }); 
} 

は、これは私がこれまでに変更したいフレームのための私のコードです:

class GameFrame_Test1 extends JPanel{ 
    private Image mshi; 

    public GameFrame_Test1() { 

     loadImage(); 
     setSurfaceSize(); 
    } 

    private void loadImage() { 

     mshi = new ImageIcon("content/Placeholder_Map.png").getImage(); 
    } 

    private void setSurfaceSize() { 

     Dimension d = new Dimension(); 
     d.width = mshi.getWidth(null); 
     d.height = mshi.getHeight(null); 
     setPreferredSize(d);   
    } 

    private void doDrawing(Graphics g) { 

     Graphics2D g2d = (Graphics2D) g; 
     g2d.drawImage(mshi, 0, 0, null); 
    } 

    @Override 
    public void paintComponent(Graphics g) { 

     super.paintComponent(g); 
     doDrawing(g); 
    } 
} 

私は、Java Swingのに非常に新しいです、これは私がそれをどのように使用するかを学ぶためのテストプログラムです。私は解決策をオンラインで見てきましたが、私の質問に言葉を出すことができないことは難しいことです。助けることができる誰にも感謝します!

答えて

2

ボタンの1つを押すと、メニューと背景画像が別のシーンに変わるようにしたいと思います。

コンテンツパネルのレイアウトマネージャーとしてCard Layoutを使用する必要があります。次に、ボタンをクリックすると、フレーム上の別のパネルを入れ替えることができます。

詳しくは、How to Use CardLayoutのSwingチュートリアルのセクションを参照してください。

+0

私が使用していたチュートリアルではカードレイアウトは一度も言及していません...私はそれを調べます。ありがとう! – SgtPineapple1st

関連する問題