2016-03-20 15 views
-1

Java'da bir doodle tanrısı tarzı oyun oluşturmaya çalışıyorum, iki JToggleButton açıldığında bunu nasıl yapacağınızı anlayamıyorum, üçüncü bir görünüme neden oluyor. İşte benim girişimim, ama herhangi bir öneride bulunmuyor. Bu konuda yeni ve kafa karıştırıcı. Bir yerde bir ActionListener'a ihtiyacım var, ama nasıl çalıştığından emin değilim. Eclipse w/windows oluşturucu kullanıyorum. Bu meydan okuma için teşekkürler!Diğer düğmeleri görünür hale getirmek için java'da JToggleButton'u kullanma

public class New { 

private JFrame frame; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       New window = new New(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the application. 
*/ 
public New() { 
    initialize(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 
private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JToggleButton waterButton = new JToggleButton("water"); 
    waterButton.addItemListener(new ItemListener() { 
     public void itemStateChanged(ItemEvent ev) { 
      if(ev.getStateChange()==ItemEvent.SELECTED){ 
      System.out.println("waterButton is toggled"); 
      }else if(ev.getStateChange()==ItemEvent.DESELECTED){ 
      System.out.println("waterButton is untoggled"); 
      } 
     } 
    }); 

    waterButton.setBounds(6, 6, 161, 29); 
    frame.getContentPane().add(waterButton); 

    JToggleButton fireButton = new JToggleButton("fire"); 
    fireButton.addItemListener(new ItemListener() { 
     public void itemStateChanged(ItemEvent ev) { 
      if(ev.getStateChange()==ItemEvent.SELECTED){ 
      System.out.println("fireButton is toggled"); 
      }else if(ev.getStateChange()==ItemEvent.DESELECTED){ 
      System.out.println("fireButton is untoggled"); 
      } 
     } 
    }); 

    fireButton.setBounds(6, 41, 161, 29); 
    frame.getContentPane().add(fireButton); 

    JToggleButton steamButton = new JToggleButton("steam"); 
    steamButton.setBounds(6, 82, 161, 29); 
    frame.getContentPane().add(steamButton); 
    //steamButton.setVisible(false); 

    if (waterButton.isSelected() && fireButton.isSelected()){ 
     steamButton.setVisible(true); 
    } 
    else{ 
     steamButton.setVisible(false); 
    } 
} 

} Burada

cevap

1
public class DoodleGodTestOrganized { 

JFrame frame = new JFrame("DoodleGod"); 
public static JToggleButton waterButton = new JToggleButton("Water"); 
public static JToggleButton fireButton = new JToggleButton("Fire"); 
public static JToggleButton steamButton = new JToggleButton("Stream"); 


public DoodleGodTestOrganized(){ 
    frame(); 

} 

public void frame(){ 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(600, 340); 
    frame.setTitle("Doogle God"); 
    frame.setLocationRelativeTo(null); 
    frame.setResizable(true); 
    frame.setVisible(true); 

    JPanel panel = new JPanel(); 
    panel.add(waterButton); 
    panel.add(fireButton); 
    panel.add(steamButton); 
    steamButton.setVisible(false); 
    panel.setVisible(true); 
    frame.add(panel, BorderLayout.NORTH); 
    frame.setVisible(true); 

} 


public static void main(String[] args) { 
    new DoodleGodTestOrganized(); 

    //Created actionListener for the waterbutton 
    waterButton.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent e){ 
      if(waterButton.isSelected() && fireButton.isSelected()){ 
       steamButton.setVisible(true); 
      }else{ 
       steamButton.setVisible(false); 
      } 
     } 
    }); 


//Actionlistener for the fireButton 
    fireButton.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent e){ 
      if(waterButton.isSelected() && fireButton.isSelected()){ 
       steamButton.setVisible(true); 
      }else{ 
       steamButton.setVisible(false); 
      } 
     } 
    }); 

} 
} 

bir çalışma çözeltisinin bir örneğidir. En iyi yazılı olan değil ama mevcut kod kurulumunuzdan çıkardım ve sorunun nasıl çözüleceğine dair bir fikir vermek için önemli kısımları gerçekten zorlamaya çalıştım.

+0

Yeni kodla ne yapmaya çalıştığınızdan emin değilim. Bence bu kavramı yanlış anladın. Konuyla ilgili birçok iyi öğretici var =) – TheMirrox

+0

Verdiğim koda bağlı olarak, cevabımı güzel değil, işe yarayan bir çözümle güncelledim. – TheMirrox

+0

ilk kez göründüğünde kalmasını sağlamak için herhangi bir öneri. Buna yarın daha fazla bakacağım, ancak bazı önerileriniz olabilir. Bunu yaparken açılmayacak şekilde görünmeye çalışıyorum. Sonra bir kez bir kez combo yapmak, programın geri kalanı boyunca kalır. Bu işe koyduğunuz çaba için çok teşekkürler, benim için çok bilgilendirici –

İlgili konular