2010-11-26 23 views
14

Geliştirdiğim uygulama bir oyundur. Yapmak istediğim, JFrame'de görünen bir metin veya mesaj penceresi gibi görünen ve artık kullanılmadığı zaman yok olan JPanels'tir. Bu JPanel'leri Netbeans'te harici sınıflar olarak tasarladım ve bunları bir actionPerformed() yönteminde çağırmak istiyorum. JOptionPanes veya diğer açılan diyaloglar bir seçenek değildir çünkü odaklanmayı oyundan uzaklaştırırlar. Ayrıca birisinin benzer bir soruda CardLayout önerdiğini gördüm. İstediğim şey bu değil çünkü sadece bölmeleri değiştirmeye çalışmıyorum. Program onlara söylediğinde gitmeliler. Bunu, JButton Eylemine bağlayarak nasıl söylerim?JPanels JFrame'de nasıl gösterilir/gizlenir?

+0

Sorunuza +1 ... Oyunlar genellikle kendi özel kullanıcı arayüzüne sahiptir. Java look'n'elelini kullanan en iyi oyun yok, en azından iyi görünümlü olmayanlar. Ne tür bir oyun yapıyorsun? hangi platform (lar) hedefliyorsunuz? (Açıkçası iPhone/iPad değil) * [Yasal Uyarı: Video oyunu sektöründe profesyonel olarak çalışırdım] *. – SyntaxT3rr0r

+0

Teşekkürler! Bu çok basit bir oyun, sahneler olarak statik görüntüler kullanan ilk kişi RPG. Ekrana çoklu görüntüleri nasıl yükleyeceğimi de ümit ediyorum. Belki de bu soru da cevaplayacaktır. – aharlow

cevap

21

setVisible(false) numaralı telefonu arayarak JPanel'i gizleyebilirsiniz. parent içeri karesinin ve panel Eklemek istediğiniz paneli kapsayıcıdır

public static void main(String args[]){ 
    JFrame f = new JFrame(); 
    f.setLayout(new BorderLayout()); 
    final JPanel p = new JPanel(); 
    p.add(new JLabel("A Panel")); 
    f.add(p, BorderLayout.CENTER); 

    //create a button which will hide the panel when clicked. 
    JButton b = new JButton("HIDE"); 
    b.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
       p.setVisible(false); 
     } 
    }); 

    f.add(b,BorderLayout.SOUTH); 
    f.pack(); 
    f.setVisible(true); 
} 
+0

Sanırım bu kadar basit! – aharlow

+0

Tek bir sorun var, p.setVisible (false) değiştirin; f.setVisible (false) tarafından; Panel'i gizlemek için – bestyasser

1
/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/* 
* Style1.java 
* 
* Created on May 5, 2011, 6:31:16 AM 
*/ 
package Test; 

import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JOptionPane; 

/** 
* 
* @author Sameera 
*/ 
public class Style2 extends javax.swing.JFrame { 

    /** Creates new form Style1 */ 
    public Style2() { 
     initComponents(); 
    } 

    /** This method is called from within the constructor to 
    * initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is 
    * always regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jPanel1 = new javax.swing.JPanel(); 
     cmd_SH = new javax.swing.JButton(); 
     pnl_2 = new javax.swing.JPanel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 

     cmd_SH.setText("Hide"); 
     cmd_SH.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       cmd_SHActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
       .addContainerGap(558, Short.MAX_VALUE) 
       .addComponent(cmd_SH) 
       .addContainerGap()) 
     ); 
     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
       .addContainerGap(236, Short.MAX_VALUE) 
       .addComponent(cmd_SH) 
       .addContainerGap()) 
     ); 

     pnl_2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 

     javax.swing.GroupLayout pnl_2Layout = new javax.swing.GroupLayout(pnl_2); 
     pnl_2.setLayout(pnl_2Layout); 
     pnl_2Layout.setHorizontalGroup(
      pnl_2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 621, Short.MAX_VALUE) 
     ); 
     pnl_2Layout.setVerticalGroup(
      pnl_2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGap(0, 270, Short.MAX_VALUE) 
     ); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(pnl_2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
       .addContainerGap()) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
       .addComponent(pnl_2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(17, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold> 

    private void cmd_SHActionPerformed(java.awt.event.ActionEvent evt) {          


     System.out.println(evt.getActionCommand()); 
     if (evt.getActionCommand().equals("Hide")) { 
      pnl_2.setVisible(false); 
      cmd_SH.setText("Show"); 
      this.setSize(643, 294); 
      this.pack(); 


     } 
     if (evt.getActionCommand().equals("Show")) { 
      pnl_2.setVisible(true); 
      cmd_SH.setText("Hide"); 
      this.setSize(643, 583); 
      this.pack();  
     } 
    }          

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       new Style1().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify 
    private javax.swing.JButton cmd_SH; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JPanel pnl_2; 
    // End of variables declaration 
} 
+4

Lütfen sadece sadece kod cevapları sağlamaz. –

0

Çağrısı parent.remove(panel), Örneğin:.