2016-04-07 5 views
1

Ich weiß nicht wirklich, wie ich diese Frage formulieren soll, aber ich kann erklären, was ich versuche zu tun. Ich habe mein Programm zeichnen ein einfaches Menü mit einem Hintergrundbild und 3 Tasten entlang der Unterseite. Ich möchte es so machen, dass, wenn ich eine der Tasten drücke, das Menü und das Hintergrundbild zu einer anderen Szene wechseln. Zum Beispiel durch Drücken von Play, um ein Spiel zu starten oder durch Drücken von Optionen, um zu einem Optionsmenü zu gelangen.Wie ändere ich, was in Java Swing angezeigt wird?

Dies ist mein Code für das primäre Menü:

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); 
     } 
    }); 
} 

Das ist mein Code für den Rahmen ist ich so weit ändern wollen:

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); 
    } 
} 

Ich bin sehr neu auf Java Swing, und das ist ein Testprogramm für mich zu lernen, wie man es benutzt. Ich habe online nach einer Lösung gesucht, aber es ist schwer, meine Frage nicht zu formulieren. Danke an alle, die helfen können!

Antwort

2

Ich möchte es so machen, dass, wenn ich eine der Tasten drücke, das Menü und das Hintergrundbild zu einer anderen Szene wechseln.

Sie sollten einen Card Layout als Layout-Manager des Inhaltsbereichs verwenden. Dann können Sie ein anderes Feld auf dem Rahmen austauschen, wenn Sie auf eine Schaltfläche klicken.

Weitere Informationen und Arbeitsbeispiele finden Sie im Abschnitt zum Swing-Lernprogramm unter How to Use CardLayout.

+0

Das Tutorial, das ich verwendete, erwähnte Kartenlayout nie ... Ich werde es untersuchen. Vielen Dank! – SgtPineapple1st

Verwandte Themen